[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
|
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||||
|
|
||||||
|
import com.google.gson.GsonBuilder
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.ResolvedDependency
|
import org.gradle.api.artifacts.ResolvedDependency
|
||||||
import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache
|
import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache
|
||||||
@@ -42,4 +43,35 @@ internal abstract class AbstractNodeModulesCache(val nodeJs: NodeJsRootExtension
|
|||||||
override fun close() {
|
override fun close() {
|
||||||
cache.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
|
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||||
|
|
||||||
import com.google.gson.GsonBuilder
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.ResolvedDependency
|
import org.gradle.api.artifacts.ResolvedDependency
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -28,34 +27,24 @@ internal class CompositeNodeModuleBuilder(
|
|||||||
|
|
||||||
val packageJson = fromSrcPackageJson(srcPackageJsonFile)!!
|
val packageJson = fromSrcPackageJson(srcPackageJsonFile)!!
|
||||||
|
|
||||||
packageJson.main = srcDir.parentFile.resolve(packageJson.main!!).canonicalPath
|
|
||||||
|
|
||||||
// yarn requires semver
|
// yarn requires semver
|
||||||
packageJson.version = fixSemver(packageJson.version)
|
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,
|
container: File,
|
||||||
packageJson: PackageJson
|
packageJson: PackageJson
|
||||||
): File {
|
): File {
|
||||||
val dir = importedPackageDir(container, packageJson.name, packageJson.version)
|
return makeNodeModule(container, packageJson) {}
|
||||||
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-33
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.targets.js.npm
|
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||||
|
|
||||||
import com.google.gson.GsonBuilder
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.ResolvedDependency
|
import org.gradle.api.artifacts.ResolvedDependency
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KLIB_TYPE
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KLIB_TYPE
|
||||||
@@ -73,35 +72,4 @@ private fun isKotlinJsRuntimeFile(file: File): Boolean {
|
|||||||
val name = file.name
|
val name = file.name
|
||||||
return (name.endsWith(".js") && !name.endsWith(".meta.js"))
|
return (name.endsWith(".js") && !name.endsWith(".meta.js"))
|
||||||
|| name.endsWith(".js.map")
|
|| 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