diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt index 3dd003c954d..3b88af6399a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmDependency.kt @@ -46,6 +46,9 @@ data class NpmDependency( npmProject.resolve(item.key)?.let { all.add(it) + if (it.path.endsWith(".js")) { + all.add(File(it.path.removeSuffix(".js") + ".meta.js")) + } } if (transitive) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProjectModules.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProjectModules.kt index 69e1417bb16..c9736d27f5e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProjectModules.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmProjectModules.kt @@ -60,9 +60,9 @@ internal open class NpmProjectModules( Gson().fromJson(it, JsonObject::class.java) } - packageJson["main"] as? String? - ?: packageJson["module"] as? String? - ?: packageJson["browser"] as? String? + packageJson.getStringOrNull("main") + ?: packageJson.getStringOrNull("module") + ?: packageJson.getStringOrNull("browser") } else null return if (main != null) { @@ -72,6 +72,14 @@ internal open class NpmProjectModules( } else resolveIndex(dir) } + private fun JsonObject.getStringOrNull(key: String): String? { + val value = get(key) + if (value == null || !value.isJsonPrimitive) return null + val jsonPrimitive = value.asJsonPrimitive + if (jsonPrimitive.isString) return jsonPrimitive.asString + return null + } + private fun resolveIndex(dir: File): File? = resolveAsFile(dir.resolve(INDEX_FILE_NAME)) private fun resolveAsFile(file: File): File? {