[Gradle, JS] KT-36784 Fix absolute paths on relative in package.json
#KT-32466 fixed #KT-36784 fixed #KT-36864 fixed
This commit is contained in:
+33
-1
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||
|
||||
import com.google.gson.GsonBuilder
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.ResolvedDependency
|
||||
import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache
|
||||
@@ -42,4 +43,35 @@ internal abstract class AbstractNodeModulesCache(val nodeJs: NodeJsRootExtension
|
||||
override fun close() {
|
||||
cache.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun makeNodeModule(
|
||||
container: File,
|
||||
packageJson: PackageJson,
|
||||
files: (File) -> Unit
|
||||
): File {
|
||||
val dir = importedPackageDir(container, packageJson.name, packageJson.version)
|
||||
|
||||
if (dir.exists()) dir.deleteRecursively()
|
||||
|
||||
check(dir.mkdirs()) {
|
||||
"Cannot create directory: $dir"
|
||||
}
|
||||
|
||||
val gson = GsonBuilder()
|
||||
.setPrettyPrinting()
|
||||
.create()
|
||||
|
||||
files(dir)
|
||||
|
||||
dir.resolve("package.json").writer().use {
|
||||
gson.toJson(packageJson, it)
|
||||
}
|
||||
|
||||
return dir
|
||||
}
|
||||
|
||||
fun importedPackageDir(container: File, name: String, version: String): File =
|
||||
container.resolve(name).resolve(version)
|
||||
|
||||
fun GradleNodeModule(dir: File) = GradleNodeModule(dir.parentFile.name, dir.name, dir)
|
||||
+11
-22
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||
|
||||
import com.google.gson.GsonBuilder
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.ResolvedDependency
|
||||
import java.io.File
|
||||
@@ -28,34 +27,24 @@ internal class CompositeNodeModuleBuilder(
|
||||
|
||||
val packageJson = fromSrcPackageJson(srcPackageJsonFile)!!
|
||||
|
||||
packageJson.main = srcDir.parentFile.resolve(packageJson.main!!).canonicalPath
|
||||
|
||||
// yarn requires semver
|
||||
packageJson.version = fixSemver(packageJson.version)
|
||||
|
||||
return makeNodeModule2(cache.dir, packageJson)
|
||||
val container = cache.dir
|
||||
val importedPackageDir = importedPackageDir(container, packageJson.name, packageJson.version)
|
||||
|
||||
packageJson.main = srcDir.parentFile.resolve(packageJson.main!!)
|
||||
.relativeToOrNull(importedPackageDir)
|
||||
?.path
|
||||
?: throw IllegalStateException("Unable to link composite builds for Kotlin/JS which have different roots")
|
||||
|
||||
return makeNodeModule(container, packageJson)
|
||||
}
|
||||
}
|
||||
|
||||
fun makeNodeModule2(
|
||||
private fun makeNodeModule(
|
||||
container: File,
|
||||
packageJson: PackageJson
|
||||
): File {
|
||||
val dir = importedPackageDir(container, packageJson.name, packageJson.version)
|
||||
|
||||
if (dir.exists()) dir.deleteRecursively()
|
||||
|
||||
check(dir.mkdirs()) {
|
||||
"Cannot create directory: $dir"
|
||||
}
|
||||
|
||||
val gson = GsonBuilder()
|
||||
.setPrettyPrinting()
|
||||
.create()
|
||||
|
||||
dir.resolve("package.json").writer().use {
|
||||
gson.toJson(packageJson, it)
|
||||
}
|
||||
|
||||
return dir
|
||||
return makeNodeModule(container, packageJson) {}
|
||||
}
|
||||
|
||||
+1
-33
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||
|
||||
import com.google.gson.GsonBuilder
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.ResolvedDependency
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KLIB_TYPE
|
||||
@@ -73,35 +72,4 @@ private fun isKotlinJsRuntimeFile(file: File): Boolean {
|
||||
val name = file.name
|
||||
return (name.endsWith(".js") && !name.endsWith(".meta.js"))
|
||||
|| name.endsWith(".js.map")
|
||||
}
|
||||
|
||||
fun makeNodeModule(
|
||||
container: File,
|
||||
packageJson: PackageJson,
|
||||
files: (File) -> Unit
|
||||
): File {
|
||||
val dir = importedPackageDir(container, packageJson.name, packageJson.version)
|
||||
|
||||
if (dir.exists()) dir.deleteRecursively()
|
||||
|
||||
check(dir.mkdirs()) {
|
||||
"Cannot create directory: $dir"
|
||||
}
|
||||
|
||||
val gson = GsonBuilder()
|
||||
.setPrettyPrinting()
|
||||
.create()
|
||||
|
||||
files(dir)
|
||||
|
||||
dir.resolve("package.json").writer().use {
|
||||
gson.toJson(packageJson, it)
|
||||
}
|
||||
|
||||
return dir
|
||||
}
|
||||
|
||||
fun importedPackageDir(container: File, name: String, version: String): File =
|
||||
container.resolve(name).resolve(version)
|
||||
|
||||
fun GradleNodeModule(dir: File) = GradleNodeModule(dir.parentFile.name, dir.name, dir)
|
||||
}
|
||||
Reference in New Issue
Block a user