[Gradle, JS] GradleNodeModuleBuilder use files instead of artifacts
#KT-32466 fixed #KT-36784 fixed #KT-36864 fixed
This commit is contained in:
+4
-5
@@ -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
|
||||
|
||||
+2
-4
@@ -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 ->
|
||||
|
||||
+2
-3
@@ -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()
|
||||
}
|
||||
|
||||
+1
-1
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user