[Gradle, JS] KotlinJsType to KotlinJsMode

This commit is contained in:
Ilya Goncharov
2020-06-01 13:22:13 +03:00
parent a5e46568ee
commit d27ad99daa
9 changed files with 64 additions and 65 deletions
@@ -16,7 +16,6 @@ import org.gradle.api.artifacts.maven.MavenResolver
import org.gradle.api.attributes.Usage import org.gradle.api.attributes.Usage
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.file.SourceDirectorySet import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging import org.gradle.api.logging.Logging
import org.gradle.api.plugins.InvalidPluginException import org.gradle.api.plugins.InvalidPluginException
import org.gradle.api.plugins.JavaPlugin import org.gradle.api.plugins.JavaPlugin
@@ -41,7 +40,7 @@ import org.jetbrains.kotlin.gradle.logging.kotlinWarn
import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary import org.jetbrains.kotlin.gradle.targets.js.ir.JsIrBinary
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink
@@ -337,7 +336,7 @@ internal class KotlinJsIrSourceSetProcessor(
private fun registerJsLink( private fun registerJsLink(
project: Project, project: Project,
taskName: String, taskName: String,
type: KotlinJsBinaryType, mode: KotlinJsBinaryMode,
configureAction: (Kotlin2JsCompile) -> Unit configureAction: (Kotlin2JsCompile) -> Unit
): TaskProvider<out KotlinJsIrLink> { ): TaskProvider<out KotlinJsIrLink> {
return tasksProvider.registerKotlinJsIrTask( return tasksProvider.registerKotlinJsIrTask(
@@ -345,7 +344,7 @@ internal class KotlinJsIrSourceSetProcessor(
taskName, taskName,
kotlinCompilation kotlinCompilation
) { task -> ) { task ->
task.type = type task.mode = mode
configureAction(task) configureAction(task)
} }
} }
@@ -363,7 +362,7 @@ internal class KotlinJsIrSourceSetProcessor(
registerKotlinCompileTask( registerKotlinCompileTask(
binary.linkTaskName binary.linkTaskName
) { project, name, action -> ) { project, name, action ->
registerJsLink(project, name, binary.type) { compileTask -> registerJsLink(project, name, binary.mode) { compileTask ->
action(compileTask) action(compileTask)
compileTask.dependsOn(kotlinTask) compileTask.dependsOn(kotlinTask)
} }
@@ -1,11 +1,11 @@
/* /*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
package org.jetbrains.kotlin.gradle.targets.js.dsl package org.jetbrains.kotlin.gradle.targets.js.dsl
enum class KotlinJsBinaryType { enum class KotlinJsBinaryMode {
PRODUCTION, PRODUCTION,
DEVELOPMENT DEVELOPMENT
} }
@@ -9,20 +9,20 @@ import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer.Companion.generateBinaryName import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer.Companion.generateBinaryName
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
interface JsBinary { interface JsBinary {
val compilation: KotlinJsCompilation val compilation: KotlinJsCompilation
val name: String val name: String
val type: KotlinJsBinaryType val mode: KotlinJsBinaryMode
} }
sealed class JsIrBinary( sealed class JsIrBinary(
override val compilation: KotlinJsCompilation, override val compilation: KotlinJsCompilation,
override val name: String, override val name: String,
override val type: KotlinJsBinaryType override val mode: KotlinJsBinaryMode
) : JsBinary { ) : JsBinary {
val linkTaskName: String = linkTaskName() val linkTaskName: String = linkTaskName()
@@ -49,16 +49,16 @@ sealed class JsIrBinary(
class Executable( class Executable(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
name: String, name: String,
type: KotlinJsBinaryType mode: KotlinJsBinaryMode
) : JsIrBinary( ) : JsIrBinary(
compilation, compilation,
name, name,
type mode
) { ) {
val executeTaskBaseName: String = val executeTaskBaseName: String =
generateBinaryName( generateBinaryName(
compilation, compilation,
type, mode,
null null
) )
} }
@@ -67,6 +67,6 @@ class Executable(
internal val JsBinary.executeTaskBaseName: String internal val JsBinary.executeTaskBaseName: String
get() = generateBinaryName( get() = generateBinaryName(
compilation, compilation,
type, mode,
null null
) )
@@ -69,7 +69,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
.all { binary -> .all { binary ->
binary as Executable binary as Executable
val type = binary.type val type = binary.mode
val runTask = registerSubTargetTask<KotlinWebpack>( val runTask = registerSubTargetTask<KotlinWebpack>(
disambiguateCamelCased( disambiguateCamelCased(
@@ -95,7 +95,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
it.outputs.upToDateWhen { false } it.outputs.upToDateWhen { false }
} }
if (type == KotlinJsBinaryType.DEVELOPMENT) { if (type == KotlinJsBinaryMode.DEVELOPMENT) {
target.runTask.dependsOn(runTask) target.runTask.dependsOn(runTask)
commonRunTask.configure { commonRunTask.configure {
it.dependsOn(runTask) it.dependsOn(runTask)
@@ -129,7 +129,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
.all { binary -> .all { binary ->
binary as Executable binary as Executable
val type = binary.type val type = binary.mode
val webpackTask = registerSubTargetTask<KotlinWebpack>( val webpackTask = registerSubTargetTask<KotlinWebpack>(
disambiguateCamelCased( disambiguateCamelCased(
binary.executeTaskBaseName, binary.executeTaskBaseName,
@@ -151,7 +151,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
it._destinationDirectory = distribution.directory it._destinationDirectory = distribution.directory
} }
if (type == KotlinJsBinaryType.PRODUCTION) { if (type == KotlinJsBinaryMode.PRODUCTION) {
assembleTask.dependsOn(webpackTask) assembleTask.dependsOn(webpackTask)
val webpackCommonTask = registerSubTargetTask<Task>( val webpackCommonTask = registerSubTargetTask<Task>(
disambiguateCamelCased(WEBPACK_TASK_NAME) disambiguateCamelCased(WEBPACK_TASK_NAME)
@@ -173,7 +173,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
binary: Executable, binary: Executable,
nodeJs: NodeJsRootExtension nodeJs: NodeJsRootExtension
) { ) {
val type = binary.type val type = binary.mode
dependsOn( dependsOn(
nodeJs.npmInstallTask, nodeJs.npmInstallTask,
@@ -190,7 +190,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
} }
private fun KotlinWebpack.configureOptimization(kind: KotlinJsBinaryType) { private fun KotlinWebpack.configureOptimization(kind: KotlinJsBinaryMode) {
mode = getByKind( mode = getByKind(
kind = kind, kind = kind,
releaseValue = Mode.PRODUCTION, releaseValue = Mode.PRODUCTION,
@@ -205,12 +205,12 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
private fun <T> getByKind( private fun <T> getByKind(
kind: KotlinJsBinaryType, kind: KotlinJsBinaryMode,
releaseValue: T, releaseValue: T,
debugValue: T debugValue: T
): T = when (kind) { ): T = when (kind) {
KotlinJsBinaryType.PRODUCTION -> releaseValue KotlinJsBinaryMode.PRODUCTION -> releaseValue
KotlinJsBinaryType.DEVELOPMENT -> debugValue KotlinJsBinaryMode.DEVELOPMENT -> debugValue
} }
companion object { companion object {
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -12,9 +12,9 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinTargetWithBinaries import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinTargetWithBinaries
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.DEVELOPMENT import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode.DEVELOPMENT
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.PRODUCTION import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode.PRODUCTION
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import javax.inject.Inject import javax.inject.Inject
@@ -80,24 +80,24 @@ constructor(
object : JsBinary { object : JsBinary {
override val compilation: KotlinJsCompilation = compilation override val compilation: KotlinJsCompilation = compilation
override val name: String = name override val name: String = name
override val type: KotlinJsBinaryType = type override val mode: KotlinJsBinaryMode = type
} }
} }
) )
internal fun getIrBinaries( internal fun getIrBinaries(
type: KotlinJsBinaryType mode: KotlinJsBinaryMode
): DomainObjectSet<JsIrBinary> = ): DomainObjectSet<JsIrBinary> =
withType(JsIrBinary::class.java) withType(JsIrBinary::class.java)
.matching { it.type == type } .matching { it.mode == mode }
private fun <T : JsBinary> createBinaries( private fun <T : JsBinary> createBinaries(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
types: Collection<KotlinJsBinaryType> = listOf(PRODUCTION, DEVELOPMENT), modes: Collection<KotlinJsBinaryMode> = listOf(PRODUCTION, DEVELOPMENT),
jsBinaryType: JsBinaryType, jsBinaryType: JsBinaryType,
create: (compilation: KotlinJsCompilation, name: String, type: KotlinJsBinaryType) -> T create: (compilation: KotlinJsCompilation, name: String, mode: KotlinJsBinaryMode) -> T
) { ) {
types.forEach { modes.forEach {
createBinary( createBinary(
compilation, compilation,
it, it,
@@ -109,13 +109,13 @@ constructor(
private fun <T : JsBinary> createBinary( private fun <T : JsBinary> createBinary(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
type: KotlinJsBinaryType, mode: KotlinJsBinaryMode,
jsBinaryType: JsBinaryType, jsBinaryType: JsBinaryType,
create: (compilation: KotlinJsCompilation, name: String, type: KotlinJsBinaryType) -> T create: (compilation: KotlinJsCompilation, name: String, mode: KotlinJsBinaryMode) -> T
) { ) {
val name = generateBinaryName( val name = generateBinaryName(
compilation, compilation,
type, mode,
jsBinaryType jsBinaryType
) )
@@ -125,7 +125,7 @@ constructor(
binaryNames.add(name) binaryNames.add(name)
val binary = create(compilation, name, type) val binary = create(compilation, name, mode)
add(binary) add(binary)
// Allow accessing binaries as properties of the container in Groovy DSL. // Allow accessing binaries as properties of the container in Groovy DSL.
if (this is ExtensionAware) { if (this is ExtensionAware) {
@@ -136,12 +136,12 @@ constructor(
companion object { companion object {
internal fun generateBinaryName( internal fun generateBinaryName(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
type: KotlinJsBinaryType, mode: KotlinJsBinaryMode,
jsBinaryType: JsBinaryType? jsBinaryType: JsBinaryType?
) = ) =
lowerCamelCaseName( lowerCamelCaseName(
compilation.name.let { if (it == KotlinCompilation.MAIN_COMPILATION_NAME) null else it }, compilation.name.let { if (it == KotlinCompilation.MAIN_COMPILATION_NAME) null else it },
type.name.toLowerCase(), mode.name.toLowerCase(),
jsBinaryType?.name?.toLowerCase() jsBinaryType?.name?.toLowerCase()
) )
} }
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -11,9 +11,9 @@ import org.gradle.api.tasks.*
import org.gradle.api.tasks.incremental.IncrementalTaskInputs import org.gradle.api.tasks.incremental.IncrementalTaskInputs
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.DEVELOPMENT import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode.DEVELOPMENT
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.PRODUCTION import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode.PRODUCTION
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.newFileProperty import org.jetbrains.kotlin.gradle.utils.newFileProperty
import java.io.File import java.io.File
@@ -21,7 +21,7 @@ import java.io.File
@CacheableTask @CacheableTask
open class KotlinJsIrLink : Kotlin2JsCompile() { open class KotlinJsIrLink : Kotlin2JsCompile() {
@Input @Input
lateinit var type: KotlinJsBinaryType lateinit var mode: KotlinJsBinaryMode
// Not check sources, only klib module // Not check sources, only klib module
@Internal @Internal
@@ -56,7 +56,7 @@ open class KotlinJsIrLink : Kotlin2JsCompile() {
} }
override fun setupCompilerArgs(args: K2JSCompilerArguments, defaultsOnly: Boolean, ignoreClasspathResolutionErrors: Boolean) { override fun setupCompilerArgs(args: K2JSCompilerArguments, defaultsOnly: Boolean, ignoreClasspathResolutionErrors: Boolean) {
when (type) { when (mode) {
PRODUCTION -> { PRODUCTION -> {
kotlinOptions.configureOptions(ENABLE_DCE, GENERATE_D_TS) kotlinOptions.configureOptions(ENABLE_DCE, GENERATE_D_TS)
} }
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin
@@ -102,7 +102,7 @@ abstract class KotlinJsIrSubTarget(
testJs.description = testTaskDescription testJs.description = testTaskDescription
val testExecutableTask = compilation.binaries.getIrBinaries( val testExecutableTask = compilation.binaries.getIrBinaries(
KotlinJsBinaryType.DEVELOPMENT KotlinJsBinaryMode.DEVELOPMENT
).single().linkTask ).single().linkTask
testJs.inputFileProperty.set( testJs.inputFileProperty.set(
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.gradle.targets.js.ir package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.language.base.plugins.LifecycleBasePlugin import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
@@ -31,7 +31,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
override fun configureRun( override fun configureRun(
compilation: KotlinJsIrCompilation compilation: KotlinJsIrCompilation
) { ) {
compilation.binaries.getIrBinaries(KotlinJsBinaryType.DEVELOPMENT) compilation.binaries.getIrBinaries(KotlinJsBinaryMode.DEVELOPMENT)
.all { developmentExecutable -> .all { developmentExecutable ->
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) { val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
group = taskGroupName group = taskGroupName
@@ -45,7 +45,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
override fun configureBuild( override fun configureBuild(
compilation: KotlinJsIrCompilation compilation: KotlinJsIrCompilation
) { ) {
compilation.binaries.getIrBinaries(KotlinJsBinaryType.PRODUCTION) compilation.binaries.getIrBinaries(KotlinJsBinaryMode.PRODUCTION)
.all { productionExecutable -> .all { productionExecutable ->
val assembleTask = project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME) val assembleTask = project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME)
assembleTask.dependsOn(productionExecutable.linkTask) assembleTask.dependsOn(productionExecutable.linkTask)
@@ -100,7 +100,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
compilation.binaries compilation.binaries
.all { binary -> .all { binary ->
val type = binary.type val type = binary.mode
val runTask = registerSubTargetTask<KotlinWebpack>( val runTask = registerSubTargetTask<KotlinWebpack>(
disambiguateCamelCased( disambiguateCamelCased(
@@ -112,7 +112,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
compilation = compilation, compilation = compilation,
dceTaskProvider = dceTaskProvider, dceTaskProvider = dceTaskProvider,
devDceTaskProvider = devDceTaskProvider, devDceTaskProvider = devDceTaskProvider,
type = type, mode = type,
nodeJs = nodeJs nodeJs = nodeJs
) )
@@ -128,7 +128,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
it.outputs.upToDateWhen { false } it.outputs.upToDateWhen { false }
} }
if (type == KotlinJsBinaryType.DEVELOPMENT) { if (type == KotlinJsBinaryMode.DEVELOPMENT) {
target.runTask.dependsOn(runTask) target.runTask.dependsOn(runTask)
commonRunTask.configure { commonRunTask.configure {
it.dependsOn(runTask) it.dependsOn(runTask)
@@ -161,7 +161,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
compilation.binaries compilation.binaries
.all { binary -> .all { binary ->
val type = binary.type val type = binary.mode
val webpackTask = registerSubTargetTask<KotlinWebpack>( val webpackTask = registerSubTargetTask<KotlinWebpack>(
disambiguateCamelCased( disambiguateCamelCased(
@@ -174,7 +174,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
compilation = compilation, compilation = compilation,
dceTaskProvider = dceTaskProvider, dceTaskProvider = dceTaskProvider,
devDceTaskProvider = devDceTaskProvider, devDceTaskProvider = devDceTaskProvider,
type = type, mode = type,
nodeJs = nodeJs nodeJs = nodeJs
) )
@@ -189,7 +189,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
it._destinationDirectory = distribution.directory it._destinationDirectory = distribution.directory
} }
if (type == KotlinJsBinaryType.PRODUCTION) { if (type == KotlinJsBinaryMode.PRODUCTION) {
assembleTask.dependsOn(webpackTask) assembleTask.dependsOn(webpackTask)
val webpackCommonTask = registerSubTargetTask<Task>( val webpackCommonTask = registerSubTargetTask<Task>(
disambiguateCamelCased(WEBPACK_TASK_NAME) disambiguateCamelCased(WEBPACK_TASK_NAME)
@@ -210,7 +210,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
dceTaskProvider: TaskProvider<KotlinJsDceTask>, dceTaskProvider: TaskProvider<KotlinJsDceTask>,
devDceTaskProvider: TaskProvider<KotlinJsDceTask>, devDceTaskProvider: TaskProvider<KotlinJsDceTask>,
type: KotlinJsBinaryType, mode: KotlinJsBinaryMode,
nodeJs: NodeJsRootExtension nodeJs: NodeJsRootExtension
) { ) {
dependsOn( dependsOn(
@@ -218,7 +218,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
target.project.tasks.named(compilation.processResourcesTaskName) target.project.tasks.named(compilation.processResourcesTaskName)
) )
configureOptimization(type) configureOptimization(mode)
devServer = KotlinWebpackConfig.DevServer( devServer = KotlinWebpackConfig.DevServer(
open = true, open = true,
@@ -227,9 +227,9 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
outputs.upToDateWhen { false } outputs.upToDateWhen { false }
val actualDceTaskProvider = when (type) { val actualDceTaskProvider = when (mode) {
KotlinJsBinaryType.PRODUCTION -> dceTaskProvider KotlinJsBinaryMode.PRODUCTION -> dceTaskProvider
KotlinJsBinaryType.DEVELOPMENT -> devDceTaskProvider KotlinJsBinaryMode.DEVELOPMENT -> devDceTaskProvider
} }
entryProperty.set( entryProperty.set(
@@ -283,7 +283,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
} }
} }
private fun KotlinWebpack.configureOptimization(kind: KotlinJsBinaryType) { private fun KotlinWebpack.configureOptimization(kind: KotlinJsBinaryMode) {
mode = getByKind( mode = getByKind(
kind = kind, kind = kind,
releaseValue = Mode.PRODUCTION, releaseValue = Mode.PRODUCTION,
@@ -298,12 +298,12 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
} }
private fun <T> getByKind( private fun <T> getByKind(
kind: KotlinJsBinaryType, kind: KotlinJsBinaryMode,
releaseValue: T, releaseValue: T,
debugValue: T debugValue: T
): T = when (kind) { ): T = when (kind) {
KotlinJsBinaryType.PRODUCTION -> releaseValue KotlinJsBinaryMode.PRODUCTION -> releaseValue
KotlinJsBinaryType.DEVELOPMENT -> debugValue KotlinJsBinaryMode.DEVELOPMENT -> debugValue
} }
companion object { companion object {