[Gradle, JS] GradleNodeModuleBuilder use files instead of artifacts

#KT-32466 fixed
#KT-36784 fixed
#KT-36864 fixed
This commit is contained in:
Ilya Goncharov
2020-03-25 18:12:50 +03:00
parent be4c301808
commit ae021e21db
4 changed files with 9 additions and 13 deletions
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.gradle.targets.js.npm
import org.gradle.api.Project
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
@@ -27,16 +26,16 @@ internal abstract class AbstractNodeModulesCache(val nodeJs: NodeJsRootExtension
@Synchronized
fun get(
dependency: ResolvedDependency,
artifact: ResolvedArtifact
): GradleNodeModule? = cache.getOrCompute(artifact.file) {
buildImportedPackage(dependency, artifact)
file: File
): GradleNodeModule? = cache.getOrCompute(file) {
buildImportedPackage(dependency, file)
}?.let {
GradleNodeModule(it)
}
abstract fun buildImportedPackage(
dependency: ResolvedDependency,
artifact: ResolvedArtifact
file: File
): File?
@Synchronized
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.gradle.targets.js.npm
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import org.gradle.api.Project
import org.gradle.api.artifacts.ResolvedArtifact
import org.gradle.api.artifacts.ResolvedDependency
import org.jetbrains.kotlin.gradle.targets.js.ir.KLIB_TYPE
import java.io.File
@@ -19,15 +18,14 @@ import java.io.File
internal class GradleNodeModuleBuilder(
val project: Project,
val dependency: ResolvedDependency,
val artifacts: Collection<ResolvedArtifact>,
val srcFiles: Collection<File>,
val cache: GradleNodeModulesCache
) {
var srcPackageJsonFile: File? = null
val files = mutableListOf<File>()
fun visitArtifacts() {
artifacts.forEach { artifact ->
val srcFile = artifact.file
srcFiles.forEach { srcFile ->
when {
isKotlinJsRuntimeFile(srcFile) -> files.add(srcFile)
srcFile.isCompatibleArchive -> project.zipTree(srcFile).forEach { innerFile ->
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.gradle.targets.js.npm
import org.gradle.api.artifacts.ResolvedArtifact
import org.gradle.api.artifacts.ResolvedDependency
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import java.io.File
@@ -16,9 +15,9 @@ import java.io.File
internal class GradleNodeModulesCache(nodeJs: NodeJsRootExtension) : AbstractNodeModulesCache(nodeJs) {
override fun buildImportedPackage(
dependency: ResolvedDependency,
artifact: ResolvedArtifact
file: File
): File? {
val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this)
val module = GradleNodeModuleBuilder(project, dependency, listOf(file), this)
module.visitArtifacts()
return module.rebuild()
}
@@ -250,7 +250,7 @@ internal class KotlinCompilationNpmResolver(
?: error("Unresolved dependent npm package: ${this@KotlinCompilationNpmResolver} -> $it")
}
val importedExternalGradleDependencies = externalGradleDependencies.mapNotNull {
resolver.gradleNodeModules.get(it.dependency, it.artifact)
resolver.gradleNodeModules.get(it.dependency, it.artifact.file)
}
val packageJson = PackageJson(