[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(
resolvedNpmProject: KotlinCompilationNpmResolution,
dependency: NpmDependency
dependency: NpmDependency,
transitive: Boolean
): Set<File>
companion object {
@@ -66,7 +66,11 @@ data class NpmDependency(
.npmProject
.nodeJs
.packageManager
.resolveDependency(it, this)
.resolveDependency(
it,
this,
transitive
)
}
?: mutableSetOf()
@@ -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,
@@ -42,7 +42,8 @@ abstract class YarnBasics : NpmApi {
override fun resolveDependency(
resolvedNpmProject: KotlinCompilationNpmResolution,
dependency: NpmDependency
dependency: NpmDependency,
transitive: Boolean
): Set<File> {
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)
}
}
}