Skip to content

Commit bf757d3

Browse files
ilgonmicSpace Team
authored and
Space Team
committed
[Gradle, JS] Support custom attributes for public package json configuration
^KT-57985 fixed ^KT-57817 fixed
1 parent af9252a commit bf757d3

File tree

7 files changed

+81
-4
lines changed

7 files changed

+81
-4
lines changed

libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,19 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) {
485485
}
486486
}
487487
}
488+
489+
@DisplayName("Multiple targets works without clash")
490+
@GradleTest
491+
fun testMultipleJsTargets(gradleVersion: GradleVersion) {
492+
project("kotlin-js-multiple-targets", gradleVersion) {
493+
buildGradleKts.modify(::transformBuildScriptWithPluginsDsl)
494+
495+
build("assemble") {
496+
assertTasksExecuted(":compileProductionExecutableKotlinServerSide")
497+
assertTasksExecuted(":compileProductionExecutableKotlinClientSide")
498+
}
499+
}
500+
}
488501
}
489502

490503
@JsGradlePluginTests
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
plugins {
2+
kotlin("multiplatform")
3+
}
4+
5+
repositories {
6+
mavenCentral()
7+
mavenLocal()
8+
}
9+
10+
kotlin {
11+
js("clientSide") {
12+
attributes {
13+
attribute(Attribute.of("js.target", String::class.java), "clientSide")
14+
}
15+
browser {
16+
17+
}
18+
binaries.executable()
19+
}
20+
21+
js("serverSide") {
22+
attributes {
23+
attribute(Attribute.of("js.target", String::class.java), "serverSide")
24+
}
25+
nodejs {
26+
27+
}
28+
binaries.executable()
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
3+
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
4+
*/
5+
6+
package com.example
7+
8+
fun main() {
9+
println("Sheldon")
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
3+
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
4+
*/
5+
6+
package com.example
7+
8+
fun main() {
9+
println("Leonard")
10+
}

libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsCompilation.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package org.jetbrains.kotlin.gradle.plugin.mpp
1010

1111
import groovy.lang.Closure
12+
import org.gradle.api.attributes.AttributeContainer
1213
import org.gradle.api.tasks.TaskProvider
1314
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
1415
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
@@ -53,6 +54,19 @@ open class KotlinJsCompilation @Inject internal constructor(
5354
override val processResourcesTaskName: String
5455
get() = disambiguateName("processResources")
5556

57+
val npmConfigurationName
58+
get() = compilation.disambiguateName("npm")
59+
60+
val publicPackageJsonConfigurationName
61+
get() = compilation.disambiguateName("publicPackageJsonConfiguration")
62+
63+
override val relatedConfigurationNames: List<String>
64+
get() = super.relatedConfigurationNames + npmConfigurationName + publicPackageJsonConfigurationName
65+
66+
override fun getAttributes(): AttributeContainer {
67+
return compilation.attributes
68+
}
69+
5670
@Suppress("DEPRECATION")
5771
@Deprecated("Accessing task instance directly is deprecated", replaceWith = ReplaceWith("compileTaskProvider"))
5872
override val compileKotlinTask: Kotlin2JsCompile

libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/JsBinaries.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,4 @@ internal val JsBinary.executeTaskBaseName: String
132132
null
133133
)
134134

135-
internal val COMPILE_SYNC = "compileSync"
135+
internal const val COMPILE_SYNC = "compileSync"

libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class KotlinCompilationNpmResolver(
103103

104104
override fun toString(): String = "KotlinCompilationNpmResolver(${npmProject.name})"
105105

106-
val aggregatedConfiguration: Configuration by lazy {
106+
val aggregatedConfiguration: Configuration = run {
107107
createAggregatedConfiguration()
108108
}
109109

@@ -126,7 +126,7 @@ class KotlinCompilationNpmResolver(
126126
}
127127

128128
private fun createAggregatedConfiguration(): Configuration {
129-
val all = project.configurations.create(compilation.disambiguateName("npm"))
129+
val all = project.configurations.create(compilation.npmConfigurationName)
130130

131131
all.usesPlatformOf(target)
132132
all.attributes.attribute(Usage.USAGE_ATTRIBUTE, KotlinUsages.consumerRuntimeUsage(target))
@@ -156,7 +156,7 @@ class KotlinCompilationNpmResolver(
156156
}
157157

158158
private fun createPublicPackageJsonConfiguration(): Configuration {
159-
val all = project.configurations.create(compilation.disambiguateName("publicPackageJsonConfiguration"))
159+
val all = project.configurations.create(compilation.publicPackageJsonConfigurationName)
160160

161161
all.usesPlatformOf(target)
162162
all.attributes.attribute(Usage.USAGE_ATTRIBUTE, KotlinUsages.consumerRuntimeUsage(target))

0 commit comments

Comments
 (0)