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