diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt index a22fdf7741e..aa31e985b16 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt @@ -245,8 +245,8 @@ internal class KotlinCompilationNpmResolver( @get:Input val internalDependencies: Collection, - @get:Input - val internalCompositeDependencies: Collection, + @get:InputFiles + val internalCompositeDependencies: Collection, @get:InputFiles val externalGradleDependencies: Collection, @@ -265,7 +265,7 @@ internal class KotlinCompilationNpmResolver( val inputs: PackageJsonProducerInputs get() = PackageJsonProducerInputs( internalDependencies.map { it.npmProject.name }, - internalCompositeDependencies.map { it.includedBuild.projectDir.canonicalPath }, + internalCompositeDependencies.flatMap { it.getPackages() }, externalGradleDependencies.map { it.artifact.file }, externalNpmDependencies.map { "${it.scope} ${it.key}:${it.version}" } ) @@ -279,23 +279,15 @@ internal class KotlinCompilationNpmResolver( resolver.gradleNodeModules.get(it.dependency, it.artifact.file) } - val compositeDependencies = internalCompositeDependencies.mapNotNull { dependency -> - val packages = dependency.includedBuild - .projectDir - .resolve(nodeJs.projectPackagesDir.relativeTo(nodeJs.rootProject.rootDir)) - packages - .list() - ?.map { fileName -> - packages.resolve(fileName).resolve(PACKAGE_JSON) - } - ?.map { file -> + val compositeDependencies = internalCompositeDependencies.flatMap { dependency -> + dependency.getPackages() + .map { file -> resolver.compositeNodeModules.get( dependency.dependency, file ) } } - .flatten() .filterNotNull() val packageJson = PackageJson( @@ -353,6 +345,16 @@ internal class KotlinCompilationNpmResolver( ) } + private fun CompositeDependency.getPackages(): List { + return includedBuild + .projectDir + .resolve(nodeJs.projectPackagesDir.relativeTo(nodeJs.rootProject.rootDir)) + .list() + ?.map(::File) + ?.map { it.resolve(PACKAGE_JSON) } + ?: emptyList() + } + // TODO: real versions conflict resolution private fun chooseVersion(oldVersion: String?, newVersion: String): String { // https://yarnpkg.com/lang/en/docs/dependency-versions/#toc-x-ranges