[Gradle, JS] Support transitive mode for npm dependencies

#KT-36196 fixed
This commit is contained in:
Ilya Goncharov
2020-03-04 18:06:13 +03:00
parent d108c8ef51
commit 2eea8b0760
4 changed files with 26 additions and 11 deletions
@@ -25,7 +25,8 @@ interface NpmApi {
fun resolveDependency( fun resolveDependency(
resolvedNpmProject: KotlinCompilationNpmResolution, resolvedNpmProject: KotlinCompilationNpmResolution,
dependency: NpmDependency dependency: NpmDependency,
transitive: Boolean
): Set<File> ): Set<File>
companion object { companion object {
@@ -66,7 +66,11 @@ data class NpmDependency(
.npmProject .npmProject
.nodeJs .nodeJs
.packageManager .packageManager
.resolveDependency(it, this) .resolveDependency(
it,
this,
transitive
)
} }
?: mutableSetOf() ?: mutableSetOf()
@@ -23,8 +23,14 @@ object Yarn : NpmApi {
override fun resolveDependency( override fun resolveDependency(
resolvedNpmProject: KotlinCompilationNpmResolution, resolvedNpmProject: KotlinCompilationNpmResolution,
dependency: NpmDependency dependency: NpmDependency,
) = getDelegate(resolvedNpmProject.project).resolveDependency(resolvedNpmProject, dependency) transitive: Boolean
) = getDelegate(resolvedNpmProject.project)
.resolveDependency(
resolvedNpmProject,
dependency,
transitive
)
override fun resolveRootProject( override fun resolveRootProject(
rootProject: Project, rootProject: Project,
@@ -42,7 +42,8 @@ abstract class YarnBasics : NpmApi {
override fun resolveDependency( override fun resolveDependency(
resolvedNpmProject: KotlinCompilationNpmResolution, resolvedNpmProject: KotlinCompilationNpmResolution,
dependency: NpmDependency dependency: NpmDependency,
transitive: Boolean
): Set<File> { ): Set<File> {
val files = resolvedDependencies[dependency] val files = resolvedDependencies[dependency]
@@ -69,12 +70,15 @@ abstract class YarnBasics : NpmApi {
} }
} }
dependency.dependencies.forEach { if (transitive) {
resolveDependency( dependency.dependencies.forEach {
resolvedNpmProject, resolveDependency(
it resolvedNpmProject,
).also { files -> it,
all.addAll(files) transitive
).also { files ->
all.addAll(files)
}
} }
} }