diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt index 30448065d7e..a7d17a744f9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun 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.webpack.KotlinWebpack +import org.jetbrains.kotlin.gradle.tasks.KotlinJsDce interface KotlinJsTargetDsl { fun browser() = browser { } @@ -59,6 +60,13 @@ interface KotlinJsBrowserDsl : KotlinJsSubTargetDsl { ConfigureUtil.configure(fn, this) } } + + fun dceTask(body: KotlinJsDce.() -> Unit) + fun dceTask(fn: Closure<*>) { + dceTask { + ConfigureUtil.configure(fn, this) + } + } } interface KotlinJsNodeDsl : KotlinJsSubTargetDsl { 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 b00ba7c7f0b..4b8e65228cf 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 @@ -31,6 +31,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : KotlinJsSubTarget(target, "browser"), KotlinJsBrowserDsl { + private val dceConfigurations: MutableList Unit> = mutableListOf() private val dceWebpackEntryAppliers: MutableList Unit> = mutableListOf() private lateinit var dceTaskProvider: TaskProvider @@ -55,6 +56,10 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : (project.tasks.getByName(webpackTaskName) as KotlinWebpack).body() } + override fun dceTask(body: KotlinJsDce.() -> Unit) { + dceConfigurations.add(body) + } + override fun configureRun(compilation: KotlinJsCompilation) { val project = compilation.target.project @@ -172,6 +177,10 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : val kotlinTask = compilation.compileKotlinTask return project.registerTask(dceTaskName) { + dceConfigurations.forEach { configuration -> + it.configuration() + } + it.dependsOn(kotlinTask) it.classpath = project.configurations.getByName(compilation.compileDependencyConfigurationName)