[Gradle, JS] Imported dependencies as file dependencies, not workspaces
#KT-32466 fixed #KT-36784 fixed #KT-36864 fixed
This commit is contained in:
+2
-5
@@ -19,12 +19,9 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName
|
||||
import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency.Scope.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject.Companion.PACKAGE_JSON
|
||||
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.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.tasks.KotlinPackageJsonTask
|
||||
@@ -317,7 +314,7 @@ internal class KotlinCompilationNpmResolver(
|
||||
}
|
||||
|
||||
importedExternalGradleDependencies.forEach {
|
||||
packageJson.dependencies[it.name] = it.version
|
||||
packageJson.dependencies[it.name] = fileVersion(it.path)
|
||||
}
|
||||
|
||||
val dependencies = mutableMapOf<String, String>()
|
||||
|
||||
+19
-8
@@ -21,17 +21,26 @@ class YarnImportedPackagesVersionResolver(
|
||||
private val resolvedVersion = mutableMapOf<String, String>()
|
||||
private val importedProjectWorkspaces = mutableListOf<String>()
|
||||
private val externalModules = npmProjects.flatMapTo(mutableSetOf()) {
|
||||
it.externalGradleDependencies + it.internalCompositeDependencies
|
||||
it.externalGradleDependencies
|
||||
}
|
||||
|
||||
private val internalCompositeModules = npmProjects.flatMapTo(mutableSetOf()) {
|
||||
it.internalCompositeDependencies
|
||||
}
|
||||
|
||||
fun resolveAndUpdatePackages(): MutableList<String> {
|
||||
resolve()
|
||||
updatePackages()
|
||||
resolveAndUpdate(externalModules, false)
|
||||
resolveAndUpdate(internalCompositeModules, true)
|
||||
return importedProjectWorkspaces
|
||||
}
|
||||
|
||||
private fun resolve() {
|
||||
externalModules.groupBy { it.name }.forEach { (name, versions) ->
|
||||
private fun resolveAndUpdate(modules: MutableSet<GradleNodeModule>, isWorkspace: Boolean) {
|
||||
resolve(modules, isWorkspace)
|
||||
updatePackages(modules)
|
||||
}
|
||||
|
||||
private fun resolve(modules: MutableSet<GradleNodeModule>, isWorkspace: Boolean) {
|
||||
modules.groupBy { it.name }.forEach { (name, versions) ->
|
||||
val selected: GradleNodeModule = if (versions.size > 1) {
|
||||
val sorted = versions.sortedBy { it.semver }
|
||||
rootProject.logger.warn(
|
||||
@@ -43,18 +52,20 @@ class YarnImportedPackagesVersionResolver(
|
||||
selected
|
||||
} else versions.single()
|
||||
|
||||
importedProjectWorkspaces.add(selected.path.relativeTo(nodeJsWorldDir).path)
|
||||
if (isWorkspace) {
|
||||
importedProjectWorkspaces.add(selected.path.relativeTo(nodeJsWorldDir).path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updatePackages() {
|
||||
private fun updatePackages(modules: MutableSet<GradleNodeModule>) {
|
||||
if (resolvedVersion.isEmpty()) return
|
||||
|
||||
npmProjects.forEach {
|
||||
updatePackageJson(it.packageJson, it.npmProject.packageJsonFile)
|
||||
}
|
||||
|
||||
externalModules.forEach {
|
||||
modules.forEach {
|
||||
val packageJsonFile = it.path.resolve(NpmProject.PACKAGE_JSON)
|
||||
val packageJson = packageJsonFile.reader().use {
|
||||
Gson().fromJson<PackageJson>(it, PackageJson::class.java)
|
||||
|
||||
Reference in New Issue
Block a user