Skip to content

Commit d1e6652

Browse files
committed
fix: Gradle task dependency graph workaround
1 parent 0fce268 commit d1e6652

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

npm-publish-gradle-plugin/src/main/kotlin/NpmPublishPlugin.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dev.petuska.npm.publish
33
import dev.petuska.npm.publish.config.configure
44
import dev.petuska.npm.publish.config.configureNebulaNode
55
import dev.petuska.npm.publish.extension.NpmPublishExtension
6+
import dev.petuska.npm.publish.task.NodeExecTask
67
import dev.petuska.npm.publish.task.NpmAssembleTask
78
import dev.petuska.npm.publish.task.NpmPackTask
89
import dev.petuska.npm.publish.task.NpmPublishTask
@@ -46,10 +47,17 @@ public class NpmPublishPlugin : Plugin<Project> {
4647
}
4748

4849
afterEvaluate {
49-
if (rootProject.tasks.names.contains("kotlinNodeJsSetup")) {
50-
rootProject.tasks.named<NodeJsSetupTask>("kotlinNodeJsSetup").map(NodeJsSetupTask::destination)
50+
if (tasks.names.contains("kotlinNodeJsSetup")) {
51+
tasks.named<NodeJsSetupTask>("kotlinNodeJsSetup")
52+
.map(NodeJsSetupTask::destination)
5153
.let(layout::dir)
5254
.let(extension.nodeHome::convention)
55+
// Hack to work around all KGP kotlinNodeJsSetup tasks sharing the same output dir.
56+
rootProject.allprojects { subProject ->
57+
tasks.withType(NodeExecTask::class.java) {
58+
it.mustRunAfter(subProject.tasks.withType(NodeJsSetupTask::class.java))
59+
}
60+
}
5361
}
5462
tasks.maybeCreate("assemble").apply {
5563
group = "build"

npm-publish-gradle-plugin/src/main/kotlin/config/extension.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,18 @@ internal fun Project.configure(extension: NpmPublishExtension) {
1616
default = providers.environmentVariable("NODE_HOME")
1717
).map(layout.projectDirectory::dir)
1818
)
19-
extension.nodeBin.convention(extension.nodeHome.map { it.file("bin/node") })
20-
extension.npmBin.convention(extension.nodeHome.map { it.file("bin/npm") })
19+
extension.nodeBin.convention(
20+
sysProjectEnvPropertyConvention(
21+
"nodeBin",
22+
extension.nodeHome.map { it.file("bin/node").asFile.absolutePath }
23+
).map(layout.projectDirectory::file)
24+
)
25+
extension.npmBin.convention(
26+
sysProjectEnvPropertyConvention(
27+
"npmBin",
28+
extension.nodeHome.map { it.file("bin/npm").asFile.absolutePath }
29+
).map(layout.projectDirectory::file)
30+
)
2131
extension.readme.convention(
2232
sysProjectEnvPropertyConvention("readme").map(layout.projectDirectory::file)
2333
)

npm-publish-gradle-plugin/src/main/kotlin/config/kotlinJsTarget.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ internal fun Project.configure(target: KotlinJsTargetDsl): Unit = with(PluginLog
5252
}
5353

5454
null -> null
55-
else -> error("Unrecognised Kotlin/JS binary type: ${it::class.java.name}")
5655
}
5756
}
5857
val compileKotlinTask = binary.flatMap<Kotlin2JsCompile>(JsIrBinary::linkTask)

0 commit comments

Comments
 (0)