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 5972a5ebaf1..dfe4ea959ef 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 @@ -39,7 +39,7 @@ internal class GradleNodeModuleBuilder( } } - fun rebuild(): PackageJson? { + fun rebuild(): File? { if (files.isEmpty()) return null val packageJson = srcPackageJsonFile?.reader()?.use { @@ -79,7 +79,7 @@ fun makeNodeModule( container: File, packageJson: PackageJson, files: (File) -> Unit -): PackageJson { +): File { val dir = importedPackageDir(container, packageJson.name, packageJson.version) if (dir.exists()) dir.deleteRecursively() @@ -98,8 +98,10 @@ fun makeNodeModule( gson.toJson(packageJson, it) } - return packageJson + return dir } fun importedPackageDir(container: File, name: String, version: String): File = - container.resolve(name).resolve(version) \ No newline at end of file + container.resolve(name).resolve(version) + +fun GradleNodeModule(dir: File) = GradleNodeModule(dir.parentFile.name, dir.name, dir) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModulesCache.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModulesCache.kt index dba88766e51..eaf27776191 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModulesCache.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/GradleNodeModulesCache.kt @@ -10,6 +10,7 @@ import org.gradle.api.artifacts.ResolvedArtifact import org.gradle.api.artifacts.ResolvedDependency import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension +import java.io.File /** * Cache for storing already created [GradleNodeModule]s @@ -27,19 +28,19 @@ internal class GradleNodeModulesCache(val nodeJs: NodeJsRootExtension) : AutoClo fun get( dependency: ResolvedDependency, artifact: ResolvedArtifact - ): GradleNodeModule? { - val key = cache.getOrCompute(artifact.file) { - val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this) - module.visitArtifacts() - module.rebuild()?.let { - it.name + ":" + it.version - } - } + ): GradleNodeModule? = cache.getOrCompute(artifact.file) { + buildImportedPackage(dependency, artifact) + }?.let { + GradleNodeModule(it) + } - return if (key != null) { - val (name, version) = key.split(":") - GradleNodeModule(name, version, importedPackageDir(dir, name, version)) - } else null + private fun buildImportedPackage( + dependency: ResolvedDependency, + artifact: ResolvedArtifact + ): File? { + val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this) + module.visitArtifacts() + return module.rebuild() } @Synchronized