diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt index cb1d1e23529..e3115f17062 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt @@ -42,6 +42,8 @@ constructor( override lateinit var testRuns: NamedDomainObjectContainer internal set + override var moduleName: String? = null + val disambiguationClassifierInPlatform: String? get() = disambiguationClassifier?.removeJsCompilerSuffix(KotlinJsCompilerType.LEGACY) 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 4e394af3d64..79791cfd5b4 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 @@ -33,6 +33,8 @@ interface KotlinJsSubTargetContainerDsl : KotlinTarget { } interface KotlinJsTargetDsl : KotlinTarget { + var moduleName: String? + fun browser() = browser { } fun browser(body: KotlinJsBrowserDsl.() -> Unit) fun browser(fn: Closure<*>) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt index bafdc558962..494d9f20f19 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt @@ -39,6 +39,8 @@ constructor( override lateinit var testRuns: NamedDomainObjectContainer internal set + override var moduleName: String? = null + val disambiguationClassifierInPlatform: String? get() = disambiguationClassifier?.removeJsCompilerSuffix(KotlinJsCompilerType.IR) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProject.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProject.kt index b5e5667dcfa..1ac9a021939 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProject.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProject.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName +import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask import java.io.File @@ -93,24 +94,37 @@ open class NpmProject(val compilation: KotlinJsCompilation) { private fun buildNpmProjectName(): String { val project = target.project - val name = StringBuilder() - name.append(project.rootProject.name) + val moduleName = (target as KotlinJsTargetDsl).moduleName - if (project != project.rootProject) { - name.append("-") - name.append(project.name) + val compilationName = if (compilation.name != KotlinCompilation.MAIN_COMPILATION_NAME) { + compilation.name + } else null + + if (moduleName != null) { + return sequenceOf(moduleName, compilationName) + .filterNotNull() + .joinToString("-") } - if (target.name.isNotEmpty() && target.name.toLowerCase() != "js") { - name.append("-").append(target.name) - } + val rootProjectName = project.rootProject.name - if (compilation.name != KotlinCompilation.MAIN_COMPILATION_NAME) { - name.append("-").append(compilation.name) - } + val localName = if (project != project.rootProject) { + project.name + } else null - return name.toString() + val targetName = if (target.name.isNotEmpty() && target.name.toLowerCase() != "js") { + target.name + } else null + + return sequenceOf( + rootProjectName, + localName, + targetName, + compilationName + ) + .filterNotNull() + .joinToString("-") } override fun toString() = "NpmProject($name)"