diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt index e7c33e4b30e..9e203d6f9a3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget +import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson @@ -31,6 +32,17 @@ open class KotlinJsCompilation( WrapUtil.toDomainObjectSet(JsBinary::class.java) ) + var outputModuleName: String? = null + set(value) { + (target as KotlinJsSubTargetContainerDsl).apply { + check(!isBrowserConfigured && !isNodejsConfigured) { + "Please set outputModuleName for compilation before initialize browser() or nodejs() on target" + } + } + + field = value + } + override val processResourcesTaskName: String get() = disambiguateName("processResources") 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 e3115f17062..0bff26e0065 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 @@ -43,6 +43,13 @@ constructor( internal set override var moduleName: String? = null + set(value) { + check(!isBrowserConfigured && !isNodejsConfigured) { + "Please set moduleName before initialize browser() or nodejs()" + } + irTarget?.moduleName = value + field = value + } 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/ir/KotlinJsIrTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt index 494d9f20f19..976d30bf507 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 @@ -40,6 +40,12 @@ constructor( internal set override var moduleName: String? = null + set(value) { + check(!isBrowserConfigured && !isNodejsConfigured) { + "Please set moduleName before initialize browser() or nodejs()" + } + field = value + } 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 842363b9e9b..f1032ec0a3c 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 @@ -92,6 +92,10 @@ open class NpmProject(val compilation: KotlinJsCompilation) { internal fun resolve(name: String): File? = modules.resolve(name) private fun buildNpmProjectName(): String { + compilation.outputModuleName?.let { + return it + } + val project = target.project val moduleName = target.moduleName