[Gradle, JS] Use .meta.js as source of "name" and "main" fields
^KT-40342 fixed
This commit is contained in:
+16
-10
@@ -7,6 +7,9 @@ package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.ResolvedDependency
|
||||
import org.jetbrains.kotlin.gradle.targets.js.JS
|
||||
import org.jetbrains.kotlin.gradle.targets.js.JS_MAP
|
||||
import org.jetbrains.kotlin.gradle.targets.js.META_JS
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KLIB_TYPE
|
||||
import java.io.File
|
||||
|
||||
@@ -19,8 +22,8 @@ internal class GradleNodeModuleBuilder(
|
||||
val srcFiles: Collection<File>,
|
||||
val cache: GradleNodeModulesCache
|
||||
) {
|
||||
var srcPackageJsonFile: File? = null
|
||||
val files = mutableListOf<File>()
|
||||
private var srcPackageJsonFile: File? = null
|
||||
private val files = mutableListOf<File>()
|
||||
|
||||
fun visitArtifacts() {
|
||||
srcFiles.forEach { srcFile ->
|
||||
@@ -45,19 +48,22 @@ internal class GradleNodeModuleBuilder(
|
||||
version = version ?: dependency.moduleVersion
|
||||
} ?: PackageJson(dependency.moduleName, dependency.moduleVersion)
|
||||
|
||||
val jsFiles = files.filter { it.name.endsWith(".js") }
|
||||
if (jsFiles.size == 1) {
|
||||
val jsFile = jsFiles.single()
|
||||
packageJson.name = jsFile.nameWithoutExtension
|
||||
packageJson.main = jsFile.name
|
||||
val metaFiles = files.filter { it.name.endsWith(".$META_JS") }
|
||||
if (metaFiles.size == 1) {
|
||||
val metaFile = metaFiles.single()
|
||||
val name = metaFile.name.removeSuffix(".$META_JS")
|
||||
packageJson.name = name
|
||||
packageJson.main = "${name}.js"
|
||||
}
|
||||
|
||||
// yarn requires semver
|
||||
packageJson.version = fixSemver(packageJson.version)
|
||||
|
||||
val actualFiles = files.filterNot { it.name.endsWith(".$META_JS") }
|
||||
|
||||
return makeNodeModule(cache.dir, packageJson) { nodeModule ->
|
||||
project.copy { copy ->
|
||||
copy.from(files)
|
||||
copy.from(actualFiles)
|
||||
copy.into(nodeModule)
|
||||
}
|
||||
}
|
||||
@@ -73,6 +79,6 @@ private val File.isCompatibleArchive
|
||||
private fun isKotlinJsRuntimeFile(file: File): Boolean {
|
||||
if (!file.isFile) return false
|
||||
val name = file.name
|
||||
return (name.endsWith(".js") && !name.endsWith(".meta.js"))
|
||||
|| name.endsWith(".js.map")
|
||||
return name.endsWith(".$JS")
|
||||
|| name.endsWith(".$JS_MAP")
|
||||
}
|
||||
+5
@@ -21,3 +21,8 @@ fun Appendable.appendConfigsFromDir(confDir: File) {
|
||||
appendln()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const val JS = "js"
|
||||
const val JS_MAP = "js.map"
|
||||
const val META_JS = "meta.js"
|
||||
|
||||
Reference in New Issue
Block a user