[Gradle, JS] Resolve devDependencies and dependencies modules clash
This commit is contained in:
+23
-9
@@ -17,15 +17,14 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
|
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
|
||||||
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
|
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatCompilationResolverPlugin
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
|
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency.Scope.*
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.fixSemver
|
import org.jetbrains.kotlin.gradle.targets.js.npm.fixSemver
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.npm.plugins.CompilationResolverPlugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution
|
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask
|
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency.Scope.*
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.plugins.CompilationResolverPlugin
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
@@ -246,12 +245,20 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
packageJson.dependencies[it.name] = it.version
|
packageJson.dependencies[it.name] = it.version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val dependencies = mutableMapOf<String, String>()
|
||||||
|
|
||||||
externalNpmDependencies.forEach {
|
externalNpmDependencies.forEach {
|
||||||
|
val module = it.key
|
||||||
|
dependencies[it.key] = chooseVersion(dependencies[module], it.version)
|
||||||
|
}
|
||||||
|
|
||||||
|
externalNpmDependencies.forEach {
|
||||||
|
val dependency = dependencies.getValue(it.key)
|
||||||
when (it.scope) {
|
when (it.scope) {
|
||||||
NORMAL -> packageJson.dependencies[it.key] = chooseVersion(packageJson.dependencies[it.key], it.version)
|
NORMAL -> packageJson.dependencies[it.key] = dependency
|
||||||
DEV -> packageJson.devDependencies[it.key] = chooseVersion(packageJson.devDependencies[it.key], it.version)
|
DEV -> packageJson.devDependencies[it.key] = dependency
|
||||||
OPTIONAL -> packageJson.optionalDependencies[it.key] = chooseVersion(packageJson.optionalDependencies[it.key], it.version)
|
OPTIONAL -> packageJson.optionalDependencies[it.key] = dependency
|
||||||
PEER -> packageJson.peerDependencies[it.key] = chooseVersion(packageJson.peerDependencies[it.key], it.version)
|
PEER -> packageJson.peerDependencies[it.key] = dependency
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,7 +280,14 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun chooseVersion(oldVersion: String?, newVersion: String): String =
|
// TODO: real versions conflict resolution
|
||||||
oldVersion ?: newVersion // todo: real versions conflict resolution
|
private fun chooseVersion(oldVersion: String?, newVersion: String): String {
|
||||||
|
// https://yarnpkg.com/lang/en/docs/dependency-versions/#toc-x-ranges
|
||||||
|
if (oldVersion == "*") {
|
||||||
|
return newVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
return oldVersion ?: newVersion
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user