[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.title=Native Application
|
||||||
project.template.native.console.description=Application with Kotlin/Native that works as a standalone application under a specific platform.
|
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.browser.title=Browser Application
|
||||||
project.template.frontend.description=Frontend application with Kotlin/JS if you already have a backend.
|
project.template.browser.description=A blank application targeting the browser
|
||||||
|
|
||||||
project.template.nodejs.title=Node.JS Application
|
project.template.nodejs.title=Node.JS Application
|
||||||
project.template.nodejs.description=A blank application targeting Node.js
|
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.title=Native Application
|
||||||
module.template.native.console.description=Simple Kotlin/Native application for your operating system
|
module.template.native.console.description=Simple Kotlin/Native application for your operating system
|
||||||
|
|
||||||
module.template.js.simple.title=Frontend Application
|
module.template.js.simple.title=Browser Application
|
||||||
module.template.js.simple.description=Configurable Kotlin/JS frontend 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.dev=BrowserDevelopmentRun in continuous mode
|
||||||
module.template.js.simple.run.configuration.prod=BrowserProductionRun 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.simple.use.kotlinx.html=Use kotlinx.html
|
||||||
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.nodejs.title=Node.JS Application
|
module.template.simple.nodejs.title=Node.JS Application
|
||||||
module.template.simple.nodejs.description=A blank application targeting Node.js
|
module.template.simple.nodejs.description=A blank application targeting Node.js
|
||||||
|
|||||||
+2
-2
@@ -274,8 +274,8 @@ object NativeApplicationProjectTemplate : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object FrontendApplicationProjectTemplate : ProjectTemplate() {
|
object FrontendApplicationProjectTemplate : ProjectTemplate() {
|
||||||
override val title = KotlinNewProjectWizardBundle.message("project.template.frontend.title")
|
override val title = KotlinNewProjectWizardBundle.message("project.template.browser.title")
|
||||||
override val description = KotlinNewProjectWizardBundle.message("project.template.frontend.description")
|
override val description = KotlinNewProjectWizardBundle.message("project.template.browser.description")
|
||||||
override val id = "frontendApplication"
|
override val id = "frontendApplication"
|
||||||
|
|
||||||
@NonNls
|
@NonNls
|
||||||
|
|||||||
+15
-41
@@ -6,8 +6,9 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||||
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nls
|
|
||||||
import org.jetbrains.annotations.NonNls
|
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.WizardGradleRunConfiguration
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
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.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR
|
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.library.MavenArtifact
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
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.ModuleSubType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
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.buildsystem.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
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.TemplateInterceptor
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.interceptTemplate
|
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() {
|
class SimpleJsClientTemplate : Template() {
|
||||||
override val title: String = KotlinNewProjectWizardBundle.message("module.template.js.simple.title")
|
override val title: String = KotlinNewProjectWizardBundle.message("module.template.js.simple.title")
|
||||||
@@ -53,14 +51,14 @@ class SimpleJsClientTemplate : Template() {
|
|||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
val renderEngine by enumSetting<RenderEngine>(
|
val useKotlinxHtml by booleanSetting(
|
||||||
KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.engine"),
|
KotlinNewProjectWizardBundle.message("module.template.simple.use.kotlinx.html"),
|
||||||
GenerationPhase.PROJECT_GENERATION
|
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 {
|
override fun Reader.createRunConfigurations(module: ModuleIR): List<WizardRunConfiguration> = buildList {
|
||||||
if (module.originalModule.kind == ModuleKind.singleplatformJsBrowser) {
|
if (module.originalModule.kind == ModuleKind.singleplatformJsBrowser) {
|
||||||
@@ -79,19 +77,12 @@ class SimpleJsClientTemplate : Template() {
|
|||||||
|
|
||||||
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> = withSettingsOf(module.originalModule) {
|
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> = withSettingsOf(module.originalModule) {
|
||||||
buildList {
|
buildList {
|
||||||
+ArtifactBasedLibraryDependencyIR(
|
if (useKotlinxHtml.reference.settingValue()) {
|
||||||
MavenArtifact(Repositories.KOTLINX, "org.jetbrains.kotlinx", "kotlinx-html-js"),
|
+ArtifactBasedLibraryDependencyIR(
|
||||||
Versions.KOTLINX.KOTLINX_HTML(KotlinPlugin.version.propertyValue.version),
|
MavenArtifact(Repositories.KOTLINX, "org.jetbrains.kotlinx", "kotlinx-html"),
|
||||||
DependencyType.MAIN
|
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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -109,24 +100,13 @@ class SimpleJsClientTemplate : Template() {
|
|||||||
if (!hasKtorServNeighbourTarget) {
|
if (!hasKtorServNeighbourTarget) {
|
||||||
+(FileTemplateDescriptor("$id/index.html.vm") asResourceOf SourcesetType.main)
|
+(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/client.kt.vm") asSrcOf SourcesetType.main)
|
||||||
+(FileTemplateDescriptor("$id/TestClient.kt.vm", "TestClient.kt".asPath()) asSrcOf SourcesetType.test)
|
+(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 {
|
override fun createInterceptors(module: ModuleIR): List<TemplateInterceptor> = buildList {
|
||||||
+interceptTemplate(KtorServerTemplate()) {
|
+interceptTemplate(KtorServerTemplate()) {
|
||||||
applicableIf { buildFileIR ->
|
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