Gradle, js, NPM: select one version between tools and all of compile configurations
#KT-31696 Fixed
This commit is contained in:
+8
-6
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle.targets.js.npm
|
|||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.Configuration
|
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.KotlinMultiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleTargetExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtensionOrNull
|
import org.jetbrains.kotlin.gradle.dsl.kotlinExtensionOrNull
|
||||||
@@ -102,10 +101,12 @@ internal class NpmProjectVisitor(val resolver: NpmResolver, val project: Project
|
|||||||
val npmDependencies = mutableSetOf<NpmDependency>()
|
val npmDependencies = mutableSetOf<NpmDependency>()
|
||||||
val gradleDeps = NpmGradleDependencies()
|
val gradleDeps = NpmGradleDependencies()
|
||||||
|
|
||||||
|
val aggregateConfiguration = project.configurations.create("$name-js")
|
||||||
|
|
||||||
compilation.allKotlinSourceSets.forEach { sourceSet ->
|
compilation.allKotlinSourceSets.forEach { sourceSet ->
|
||||||
sourceSet.relatedConfigurationNames.forEach { configurationName ->
|
sourceSet.relatedConfigurationNames.forEach { configurationName ->
|
||||||
val configuration = project.configurations.getByName(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]
|
val requiredByTasks = requiredFromTasksByCompilation[compilation]
|
||||||
var nodeModulesRequired = false
|
var nodeModulesRequired = false
|
||||||
if (requiredByTasks != null && requiredByTasks.isNotEmpty()) {
|
if (requiredByTasks != null && requiredByTasks.isNotEmpty()) {
|
||||||
val configuration = project.configurations.create("$name-jsTools")
|
val toolsConfiguration = project.configurations.create("$name-jsTools")
|
||||||
requiredByTasks.forEach {
|
requiredByTasks.forEach {
|
||||||
if (it.nodeModulesRequired) nodeModulesRequired = true
|
if (it.nodeModulesRequired) nodeModulesRequired = true
|
||||||
it.requiredNpmDependencies.forEach { requirement ->
|
it.requiredNpmDependencies.forEach { requirement ->
|
||||||
configuration.dependencies.add(requirement.createDependency(project))
|
toolsConfiguration.dependencies.add(requirement.createDependency(project))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
configuration.resolve()
|
aggregateConfiguration.extendsFrom(toolsConfiguration)
|
||||||
visitConfiguration(configuration, npmDependencies, gradleDeps)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
visitConfiguration(aggregateConfiguration, npmDependencies, gradleDeps)
|
||||||
|
|
||||||
npmDependencies.forEach {
|
npmDependencies.forEach {
|
||||||
packageJson.dependencies[it.key] = resolver.chooseVersion(packageJson.dependencies[it.key], it.version)
|
packageJson.dependencies[it.key] = resolver.chooseVersion(packageJson.dependencies[it.key], it.version)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user