[JS, Wizard] Separate browser application without react
^KT-41417 fixed
This commit is contained in:
+5
-8
@@ -126,8 +126,8 @@ project.template.full.stack.description=Fully-functional web application using K
|
||||
project.template.native.console.title=Native Application
|
||||
project.template.native.console.description=Application with Kotlin/Native that works as a standalone application under a specific platform.
|
||||
|
||||
project.template.frontend.title=Frontend Application
|
||||
project.template.frontend.description=Frontend application with Kotlin/JS if you already have a backend.
|
||||
project.template.browser.title=Browser Application
|
||||
project.template.browser.description=A blank application targeting the browser
|
||||
|
||||
project.template.nodejs.title=Node.JS Application
|
||||
project.template.nodejs.description=A blank application targeting Node.js
|
||||
@@ -152,14 +152,11 @@ module.template.ktor.server.setting.engine.jetty=Jetty
|
||||
module.template.native.console.title=Native Application
|
||||
module.template.native.console.description=Simple Kotlin/Native application for your operating system
|
||||
|
||||
module.template.js.simple.title=Frontend Application
|
||||
module.template.js.simple.description=Configurable Kotlin/JS frontend application
|
||||
module.template.js.simple.title=Browser Application
|
||||
module.template.js.simple.description=A blank application targeting the browser
|
||||
module.template.js.simple.run.configuration.dev=BrowserDevelopmentRun in continuous mode
|
||||
module.template.js.simple.run.configuration.prod=BrowserProductionRun in continuous mode
|
||||
module.template.js.simple.setting.rendering.engine=Rendering engine
|
||||
module.template.js.simple.setting.rendering.kotlinx.html=Use statically-typed Kotlinx.html DSL
|
||||
module.template.js.simple.setting.rendering.react=Use Kotlin-wrapped React library
|
||||
module.template.js.simple.setting.rendering.react.styled=Use Kotlin-wrapped React framework with Styled Components
|
||||
module.template.simple.use.kotlinx.html=Use kotlinx.html
|
||||
|
||||
module.template.simple.nodejs.title=Node.JS Application
|
||||
module.template.simple.nodejs.description=A blank application targeting Node.js
|
||||
|
||||
+2
-2
@@ -274,8 +274,8 @@ object NativeApplicationProjectTemplate : ProjectTemplate() {
|
||||
}
|
||||
|
||||
object FrontendApplicationProjectTemplate : ProjectTemplate() {
|
||||
override val title = KotlinNewProjectWizardBundle.message("project.template.frontend.title")
|
||||
override val description = KotlinNewProjectWizardBundle.message("project.template.frontend.description")
|
||||
override val title = KotlinNewProjectWizardBundle.message("project.template.browser.title")
|
||||
override val description = KotlinNewProjectWizardBundle.message("project.template.browser.description")
|
||||
override val id = "frontendApplication"
|
||||
|
||||
@NonNls
|
||||
|
||||
+15
-41
@@ -6,8 +6,9 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||
|
||||
|
||||
import org.jetbrains.annotations.Nls
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration
|
||||
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
@@ -16,18 +17,15 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.TemplateInterceptor
|
||||
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.interceptTemplate
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
|
||||
class SimpleJsClientTemplate : Template() {
|
||||
override val title: String = KotlinNewProjectWizardBundle.message("module.template.js.simple.title")
|
||||
@@ -53,14 +51,14 @@ class SimpleJsClientTemplate : Template() {
|
||||
else -> false
|
||||
}
|
||||
|
||||
val renderEngine by enumSetting<RenderEngine>(
|
||||
KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.engine"),
|
||||
val useKotlinxHtml by booleanSetting(
|
||||
KotlinNewProjectWizardBundle.message("module.template.simple.use.kotlinx.html"),
|
||||
GenerationPhase.PROJECT_GENERATION
|
||||
) {
|
||||
defaultValue = value(RenderEngine.REACT_WITH_STYLED)
|
||||
defaultValue = value(false)
|
||||
}
|
||||
|
||||
override val settings: List<TemplateSetting<*, *>> = listOf(renderEngine)
|
||||
override val settings: List<TemplateSetting<*, *>> = listOf(useKotlinxHtml)
|
||||
|
||||
override fun Reader.createRunConfigurations(module: ModuleIR): List<WizardRunConfiguration> = buildList {
|
||||
if (module.originalModule.kind == ModuleKind.singleplatformJsBrowser) {
|
||||
@@ -79,19 +77,12 @@ class SimpleJsClientTemplate : Template() {
|
||||
|
||||
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> = withSettingsOf(module.originalModule) {
|
||||
buildList {
|
||||
+ArtifactBasedLibraryDependencyIR(
|
||||
MavenArtifact(Repositories.KOTLINX, "org.jetbrains.kotlinx", "kotlinx-html-js"),
|
||||
Versions.KOTLINX.KOTLINX_HTML(KotlinPlugin.version.propertyValue.version),
|
||||
DependencyType.MAIN
|
||||
)
|
||||
|
||||
val kotlinVersion = KotlinPlugin.version.propertyValue
|
||||
if (renderEngine.reference.settingValue != RenderEngine.KOTLINX_HTML) {
|
||||
+Dependencies.KOTLIN_REACT(kotlinVersion.version)
|
||||
+Dependencies.KOTLIN_REACT_DOM(kotlinVersion.version)
|
||||
if (renderEngine.reference.settingValue == RenderEngine.REACT_WITH_STYLED) {
|
||||
+Dependencies.KOTLIN_STYLED(kotlinVersion.version)
|
||||
}
|
||||
if (useKotlinxHtml.reference.settingValue()) {
|
||||
+ArtifactBasedLibraryDependencyIR(
|
||||
MavenArtifact(Repositories.KOTLINX, "org.jetbrains.kotlinx", "kotlinx-html"),
|
||||
Versions.KOTLINX.KOTLINX_HTML(KotlinPlugin.version.propertyValue.version),
|
||||
DependencyType.MAIN
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,24 +100,13 @@ class SimpleJsClientTemplate : Template() {
|
||||
if (!hasKtorServNeighbourTarget) {
|
||||
+(FileTemplateDescriptor("$id/index.html.vm") asResourceOf SourcesetType.main)
|
||||
}
|
||||
if (renderEngine.reference.settingValue == RenderEngine.KOTLINX_HTML) {
|
||||
if (useKotlinxHtml.reference.settingValue()) {
|
||||
+(FileTemplateDescriptor("$id/client.kt.vm") asSrcOf SourcesetType.main)
|
||||
+(FileTemplateDescriptor("$id/TestClient.kt.vm", "TestClient.kt".asPath()) asSrcOf SourcesetType.test)
|
||||
} else {
|
||||
+(FileTemplateDescriptor("$id/reactClient.kt.vm", "client.kt".asPath()) asSrcOf SourcesetType.main)
|
||||
+(FileTemplateDescriptor("$id/reactComponent.kt.vm", "welcome.kt".asPath()) asSrcOf SourcesetType.main)
|
||||
}
|
||||
|
||||
if (renderEngine.reference.settingValue == RenderEngine.REACT_WITH_STYLED) {
|
||||
+(FileTemplateDescriptor("$id/WelcomeStyles.kt.vm") asSrcOf SourcesetType.main)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun Reader.getAdditionalSettings(module: Module): Map<String, Any> = withSettingsOf(module) {
|
||||
mapOf("useStyledComponents" to (renderEngine.reference.settingValue == RenderEngine.REACT_WITH_STYLED))
|
||||
}
|
||||
|
||||
override fun createInterceptors(module: ModuleIR): List<TemplateInterceptor> = buildList {
|
||||
+interceptTemplate(KtorServerTemplate()) {
|
||||
applicableIf { buildFileIR ->
|
||||
@@ -273,10 +253,4 @@ class SimpleJsClientTemplate : Template() {
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
enum class RenderEngine(@Nls override val text: String) : DisplayableSettingItem {
|
||||
KOTLINX_HTML(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.kotlinx.html")),
|
||||
REACT(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.react")),
|
||||
REACT_WITH_STYLED(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.react.styled"))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user