From fdbee7a99a431fad32e0b283b300ccbc54f8e24d Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Fri, 31 May 2019 10:21:36 +0300 Subject: [PATCH] Gradle, js, NPM: select one version between tools and all of compile configurations #KT-31696 Fixed --- .../gradle/targets/js/npm/NpmProjectVisitor.kt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProjectVisitor.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProjectVisitor.kt index 96883cf0363..c5455642621 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProjectVisitor.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProjectVisitor.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle.targets.js.npm import org.gradle.api.Project import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.Dependency import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtensionOrNull @@ -102,10 +101,12 @@ internal class NpmProjectVisitor(val resolver: NpmResolver, val project: Project val npmDependencies = mutableSetOf() val gradleDeps = NpmGradleDependencies() + val aggregateConfiguration = project.configurations.create("$name-js") + compilation.allKotlinSourceSets.forEach { sourceSet -> sourceSet.relatedConfigurationNames.forEach { configurationName -> val configuration = project.configurations.getByName(configurationName) - visitConfiguration(configuration, npmDependencies, gradleDeps) + aggregateConfiguration.extendsFrom(configuration) } } @@ -114,17 +115,18 @@ internal class NpmProjectVisitor(val resolver: NpmResolver, val project: Project val requiredByTasks = requiredFromTasksByCompilation[compilation] var nodeModulesRequired = false if (requiredByTasks != null && requiredByTasks.isNotEmpty()) { - val configuration = project.configurations.create("$name-jsTools") + val toolsConfiguration = project.configurations.create("$name-jsTools") requiredByTasks.forEach { if (it.nodeModulesRequired) nodeModulesRequired = true it.requiredNpmDependencies.forEach { requirement -> - configuration.dependencies.add(requirement.createDependency(project)) + toolsConfiguration.dependencies.add(requirement.createDependency(project)) } } - configuration.resolve() - visitConfiguration(configuration, npmDependencies, gradleDeps) + aggregateConfiguration.extendsFrom(toolsConfiguration) } + visitConfiguration(aggregateConfiguration, npmDependencies, gradleDeps) + npmDependencies.forEach { packageJson.dependencies[it.key] = resolver.chooseVersion(packageJson.dependencies[it.key], it.version) }