From 0b88f457e802d6b0675c8ebc5a711b0dcc72286f Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 22 Jul 2020 20:19:26 +0300 Subject: [PATCH] [Gradle, JS] Use .meta.js as source of "name" and "main" fields ^KT-40342 fixed --- .../targets/js/npm/GradleNodeModuleBuilder.kt | 26 ++++++++++++------- .../kotlin/gradle/targets/js/utils.kt | 5 ++++ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt index 2bfadc82d57..97ac00bd065 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModuleBuilder.kt @@ -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, val cache: GradleNodeModulesCache ) { - var srcPackageJsonFile: File? = null - val files = mutableListOf() + private var srcPackageJsonFile: File? = null + private val files = mutableListOf() 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") } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/utils.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/utils.kt index 784acdeb1e4..cf7dd03e430 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/utils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/utils.kt @@ -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"