[Gradle, JS] Dukat with both create externals only once

This commit is contained in:
Ilya Goncharov
2020-09-04 14:34:22 +03:00
parent 210cd982f0
commit b694e3b009
2 changed files with 12 additions and 1 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.gradle.targets.js.dukat
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
import org.jetbrains.kotlin.gradle.targets.js.npm.plugins.CompilationResolverPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinRootNpmResolution
@@ -37,6 +38,13 @@ internal class DukatCompilationResolverPlugin(
compilation.compileKotlinTaskProvider.dependsOn(integratedTask)
val target = compilation.target
if (target is KotlinJsTarget && target.irTarget != null) {
target.irTarget?.compilations?.named(compilation.name) {
it.compileKotlinTaskProvider.dependsOn(integratedTask)
}
}
project.registerTask<SeparateDukatTask>(
separateTaskName,
listOf(compilation)
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope
import org.jetbrains.kotlin.gradle.plugin.sources.compilationDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.targets.js.npm.*
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject.Companion.PACKAGE_JSON
@@ -72,7 +73,9 @@ internal class KotlinCompilationNpmResolver(
val plugins: List<CompilationResolverPlugin> = projectResolver.resolver.plugins
.flatMap {
if (compilation.isMain()) {
val target = compilation.target
// If mixedMode (BOTH) register only for legacy target
if (compilation.isMain() && ((target is KotlinJsTarget) || (target is KotlinJsIrTarget && !target.mixedMode))) {
it.createCompilationResolverPlugins(this)
} else {
emptyList()