[Gradle, JS] Add task requirements only after evaluated

This commit is contained in:
Ilya Goncharov
2020-06-15 20:46:20 +03:00
parent aaf3410708
commit 7b89717092
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.dsl.kotlinExtensionOrNull
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinProjectNpmResolution import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinProjectNpmResolution
@@ -44,21 +45,24 @@ internal class KotlinProjectNpmResolver(
init { init {
addContainerListeners() addContainerListeners()
val nodeJs = resolver.nodeJs
project.tasks.implementing(RequiresNpmDependencies::class) project.whenEvaluated {
.configureEach { task -> val nodeJs = resolver.nodeJs
if (task.enabled) { project.tasks.implementing(RequiresNpmDependencies::class)
task as RequiresNpmDependencies .configureEach { task ->
// KotlinJsTest delegates npm dependencies to testFramework, if (task.enabled) {
// which can be defined after this configure action task as RequiresNpmDependencies
val packageJsonTaskHolder = get(task.compilation).packageJsonTaskHolder // KotlinJsTest delegates npm dependencies to testFramework,
if (task !is KotlinJsTest) { // which can be defined after this configure action
nodeJs.taskRequirements.addTaskRequirements(task) val packageJsonTaskHolder = get(task.compilation).packageJsonTaskHolder
if (task !is KotlinJsTest) {
nodeJs.taskRequirements.addTaskRequirements(task)
}
task.dependsOn(packageJsonTaskHolder)
task.dependsOn(nodeJs.npmInstallTask)
} }
task.dependsOn(packageJsonTaskHolder)
task.dependsOn(nodeJs.npmInstallTask)
} }
} }
} }
private fun addContainerListeners() { private fun addContainerListeners() {