[Gradle, JS] KT-36784 Input as composite package.json
#KT-32466 fixed #KT-36784 fixed #KT-36864 fixed
This commit is contained in:
+16
-14
@@ -245,8 +245,8 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
@get:Input
|
@get:Input
|
||||||
val internalDependencies: Collection<String>,
|
val internalDependencies: Collection<String>,
|
||||||
|
|
||||||
@get:Input
|
@get:InputFiles
|
||||||
val internalCompositeDependencies: Collection<String>,
|
val internalCompositeDependencies: Collection<File>,
|
||||||
|
|
||||||
@get:InputFiles
|
@get:InputFiles
|
||||||
val externalGradleDependencies: Collection<File>,
|
val externalGradleDependencies: Collection<File>,
|
||||||
@@ -265,7 +265,7 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
val inputs: PackageJsonProducerInputs
|
val inputs: PackageJsonProducerInputs
|
||||||
get() = PackageJsonProducerInputs(
|
get() = PackageJsonProducerInputs(
|
||||||
internalDependencies.map { it.npmProject.name },
|
internalDependencies.map { it.npmProject.name },
|
||||||
internalCompositeDependencies.map { it.includedBuild.projectDir.canonicalPath },
|
internalCompositeDependencies.flatMap { it.getPackages() },
|
||||||
externalGradleDependencies.map { it.artifact.file },
|
externalGradleDependencies.map { it.artifact.file },
|
||||||
externalNpmDependencies.map { "${it.scope} ${it.key}:${it.version}" }
|
externalNpmDependencies.map { "${it.scope} ${it.key}:${it.version}" }
|
||||||
)
|
)
|
||||||
@@ -279,23 +279,15 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
resolver.gradleNodeModules.get(it.dependency, it.artifact.file)
|
resolver.gradleNodeModules.get(it.dependency, it.artifact.file)
|
||||||
}
|
}
|
||||||
|
|
||||||
val compositeDependencies = internalCompositeDependencies.mapNotNull { dependency ->
|
val compositeDependencies = internalCompositeDependencies.flatMap { dependency ->
|
||||||
val packages = dependency.includedBuild
|
dependency.getPackages()
|
||||||
.projectDir
|
.map { file ->
|
||||||
.resolve(nodeJs.projectPackagesDir.relativeTo(nodeJs.rootProject.rootDir))
|
|
||||||
packages
|
|
||||||
.list()
|
|
||||||
?.map { fileName ->
|
|
||||||
packages.resolve(fileName).resolve(PACKAGE_JSON)
|
|
||||||
}
|
|
||||||
?.map { file ->
|
|
||||||
resolver.compositeNodeModules.get(
|
resolver.compositeNodeModules.get(
|
||||||
dependency.dependency,
|
dependency.dependency,
|
||||||
file
|
file
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.flatten()
|
|
||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
|
|
||||||
val packageJson = PackageJson(
|
val packageJson = PackageJson(
|
||||||
@@ -353,6 +345,16 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun CompositeDependency.getPackages(): List<File> {
|
||||||
|
return includedBuild
|
||||||
|
.projectDir
|
||||||
|
.resolve(nodeJs.projectPackagesDir.relativeTo(nodeJs.rootProject.rootDir))
|
||||||
|
.list()
|
||||||
|
?.map(::File)
|
||||||
|
?.map { it.resolve(PACKAGE_JSON) }
|
||||||
|
?: emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: real versions conflict resolution
|
// TODO: real versions conflict resolution
|
||||||
private fun chooseVersion(oldVersion: String?, newVersion: String): String {
|
private fun chooseVersion(oldVersion: String?, newVersion: String): String {
|
||||||
// https://yarnpkg.com/lang/en/docs/dependency-versions/#toc-x-ranges
|
// https://yarnpkg.com/lang/en/docs/dependency-versions/#toc-x-ranges
|
||||||
|
|||||||
Reference in New Issue
Block a user