diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt index 1bcf1f58fdb..bb5b2f4cafe 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt @@ -34,7 +34,6 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : KotlinJsBrowserDsl { private val dceConfigurations: MutableList Unit> = mutableListOf() - private val dceWebpackEntryAppliers: MutableList Unit> = mutableListOf() private lateinit var buildVariants: NamedDomainObjectContainer @@ -75,6 +74,10 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : val project = compilation.target.project val nodeJs = NodeJsRootPlugin.apply(project.rootProject) + val compileKotlinTask = compilation.compileKotlinTask + + val dceOutputFileAppliers: MutableList Unit> = mutableListOf() + buildVariants.all { buildVariant -> val kind = buildVariant.kind val runTask = project.registerTask( @@ -83,7 +86,6 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : "run" ) ) { - val compileKotlinTask = compilation.compileKotlinTask it.dependsOn( nodeJs.npmInstallTask, target.project.tasks.getByName(compilation.processResourcesTaskName) @@ -104,7 +106,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : when (kind) { BuildVariantKind.RELEASE -> { - dceWebpackEntryAppliers.add { file -> + dceOutputFileAppliers.add { file -> it.entry = file } it.resolveFromModulesFirst = true @@ -116,6 +118,12 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : } } + dceTaskProvider.configure { + dceOutputFileAppliers.forEach { dceOutputFileApplier -> + it.dceOutputFileApplier(it.destinationDir.resolve(compileKotlinTask.outputFile.name)) + } + } + if (kind == BuildVariantKind.DEBUG) { target.runTask.dependsOn(runTask) } @@ -129,6 +137,10 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : val project = compilation.target.project val nodeJs = NodeJsRootPlugin.apply(project.rootProject) + val compileKotlinTask = compilation.compileKotlinTask + + val dceOutputFileAppliers: MutableList Unit> = mutableListOf() + buildVariants.all { buildVariant -> val kind = buildVariant.kind val webpackTask = project.registerTask( @@ -138,7 +150,6 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : ) ) { - val compileKotlinTask = compilation.compileKotlinTask it.dependsOn( nodeJs.npmInstallTask ) @@ -150,7 +161,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : when (kind) { BuildVariantKind.RELEASE -> { - dceWebpackEntryAppliers.add { file -> + dceOutputFileAppliers.add { file -> it.entry = file } it.resolveFromModulesFirst = true @@ -162,6 +173,12 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : } } + dceTaskProvider.configure { + dceOutputFileAppliers.forEach { dceOutputFileApplier -> + it.dceOutputFileApplier(it.destinationDir.resolve(compileKotlinTask.outputFile.name)) + } + } + if (kind == BuildVariantKind.RELEASE) { project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).dependsOn(webpackTask) } @@ -193,10 +210,6 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : it.destinationDir = it.dceOptions.outputDirectory?.let { File(it) } ?: compilation.npmProject.dir.resolve(DCE_DIR) - dceWebpackEntryAppliers.forEach { entryApplier -> - it.entryApplier(it.destinationDir.resolve(kotlinTask.outputFile.name)) - } - it.source(kotlinTask.outputFile) } }