From 7b8971709240b05423957f00b1e71b0854a48dcb Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Mon, 15 Jun 2020 20:46:20 +0300 Subject: [PATCH] [Gradle, JS] Add task requirements only after evaluated --- .../npm/resolver/KotlinProjectNpmResolver.kt | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt index 988ec2ed82e..2a0077fe09f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.dsl.kotlinExtensionOrNull import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinTarget 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.npm.RequiresNpmDependencies import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinProjectNpmResolution @@ -44,21 +45,24 @@ internal class KotlinProjectNpmResolver( init { addContainerListeners() - val nodeJs = resolver.nodeJs - project.tasks.implementing(RequiresNpmDependencies::class) - .configureEach { task -> - if (task.enabled) { - task as RequiresNpmDependencies - // KotlinJsTest delegates npm dependencies to testFramework, - // which can be defined after this configure action - val packageJsonTaskHolder = get(task.compilation).packageJsonTaskHolder - if (task !is KotlinJsTest) { - nodeJs.taskRequirements.addTaskRequirements(task) + + project.whenEvaluated { + val nodeJs = resolver.nodeJs + project.tasks.implementing(RequiresNpmDependencies::class) + .configureEach { task -> + if (task.enabled) { + task as RequiresNpmDependencies + // KotlinJsTest delegates npm dependencies to testFramework, + // which can be defined after this configure action + 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() {