From 2eea8b0760028f6f94bbd7635ae670ade3a005f6 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 4 Mar 2020 18:06:13 +0300 Subject: [PATCH] [Gradle, JS] Support transitive mode for npm dependencies #KT-36196 fixed --- .../kotlin/gradle/targets/js/npm/NpmApi.kt | 3 ++- .../gradle/targets/js/npm/NpmDependency.kt | 6 +++++- .../kotlin/gradle/targets/js/yarn/Yarn.kt | 10 ++++++++-- .../gradle/targets/js/yarn/YarnBasics.kt | 18 +++++++++++------- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmApi.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmApi.kt index 6510e48e142..cc754e3113e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmApi.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmApi.kt @@ -25,7 +25,8 @@ interface NpmApi { fun resolveDependency( resolvedNpmProject: KotlinCompilationNpmResolution, - dependency: NpmDependency + dependency: NpmDependency, + transitive: Boolean ): Set companion object { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt index 1c35732f168..4f0dce64ca3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt @@ -66,7 +66,11 @@ data class NpmDependency( .npmProject .nodeJs .packageManager - .resolveDependency(it, this) + .resolveDependency( + it, + this, + transitive + ) } ?: mutableSetOf() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/Yarn.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/Yarn.kt index 9b42f83458d..5dc2292898b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/Yarn.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/Yarn.kt @@ -23,8 +23,14 @@ object Yarn : NpmApi { override fun resolveDependency( resolvedNpmProject: KotlinCompilationNpmResolution, - dependency: NpmDependency - ) = getDelegate(resolvedNpmProject.project).resolveDependency(resolvedNpmProject, dependency) + dependency: NpmDependency, + transitive: Boolean + ) = getDelegate(resolvedNpmProject.project) + .resolveDependency( + resolvedNpmProject, + dependency, + transitive + ) override fun resolveRootProject( rootProject: Project, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt index bb2883280bb..6a8b2e44267 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnBasics.kt @@ -42,7 +42,8 @@ abstract class YarnBasics : NpmApi { override fun resolveDependency( resolvedNpmProject: KotlinCompilationNpmResolution, - dependency: NpmDependency + dependency: NpmDependency, + transitive: Boolean ): Set { val files = resolvedDependencies[dependency] @@ -69,12 +70,15 @@ abstract class YarnBasics : NpmApi { } } - dependency.dependencies.forEach { - resolveDependency( - resolvedNpmProject, - it - ).also { files -> - all.addAll(files) + if (transitive) { + dependency.dependencies.forEach { + resolveDependency( + resolvedNpmProject, + it, + transitive + ).also { files -> + all.addAll(files) + } } }