[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
|
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.ResolvedArtifact
|
|
||||||
import org.gradle.api.artifacts.ResolvedDependency
|
import org.gradle.api.artifacts.ResolvedDependency
|
||||||
import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache
|
import org.jetbrains.kotlin.gradle.internal.ProcessedFilesCache
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
||||||
@@ -27,16 +26,16 @@ internal abstract class AbstractNodeModulesCache(val nodeJs: NodeJsRootExtension
|
|||||||
@Synchronized
|
@Synchronized
|
||||||
fun get(
|
fun get(
|
||||||
dependency: ResolvedDependency,
|
dependency: ResolvedDependency,
|
||||||
artifact: ResolvedArtifact
|
file: File
|
||||||
): GradleNodeModule? = cache.getOrCompute(artifact.file) {
|
): GradleNodeModule? = cache.getOrCompute(file) {
|
||||||
buildImportedPackage(dependency, artifact)
|
buildImportedPackage(dependency, file)
|
||||||
}?.let {
|
}?.let {
|
||||||
GradleNodeModule(it)
|
GradleNodeModule(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract fun buildImportedPackage(
|
abstract fun buildImportedPackage(
|
||||||
dependency: ResolvedDependency,
|
dependency: ResolvedDependency,
|
||||||
artifact: ResolvedArtifact
|
file: File
|
||||||
): File?
|
): File?
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
|
|||||||
+2
-4
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.gradle.targets.js.npm
|
|||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.GsonBuilder
|
import com.google.gson.GsonBuilder
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.artifacts.ResolvedArtifact
|
|
||||||
import org.gradle.api.artifacts.ResolvedDependency
|
import org.gradle.api.artifacts.ResolvedDependency
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KLIB_TYPE
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KLIB_TYPE
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -19,15 +18,14 @@ import java.io.File
|
|||||||
internal class GradleNodeModuleBuilder(
|
internal class GradleNodeModuleBuilder(
|
||||||
val project: Project,
|
val project: Project,
|
||||||
val dependency: ResolvedDependency,
|
val dependency: ResolvedDependency,
|
||||||
val artifacts: Collection<ResolvedArtifact>,
|
val srcFiles: Collection<File>,
|
||||||
val cache: GradleNodeModulesCache
|
val cache: GradleNodeModulesCache
|
||||||
) {
|
) {
|
||||||
var srcPackageJsonFile: File? = null
|
var srcPackageJsonFile: File? = null
|
||||||
val files = mutableListOf<File>()
|
val files = mutableListOf<File>()
|
||||||
|
|
||||||
fun visitArtifacts() {
|
fun visitArtifacts() {
|
||||||
artifacts.forEach { artifact ->
|
srcFiles.forEach { srcFile ->
|
||||||
val srcFile = artifact.file
|
|
||||||
when {
|
when {
|
||||||
isKotlinJsRuntimeFile(srcFile) -> files.add(srcFile)
|
isKotlinJsRuntimeFile(srcFile) -> files.add(srcFile)
|
||||||
srcFile.isCompatibleArchive -> project.zipTree(srcFile).forEach { innerFile ->
|
srcFile.isCompatibleArchive -> project.zipTree(srcFile).forEach { innerFile ->
|
||||||
|
|||||||
+2
-3
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.targets.js.npm
|
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||||
|
|
||||||
import org.gradle.api.artifacts.ResolvedArtifact
|
|
||||||
import org.gradle.api.artifacts.ResolvedDependency
|
import org.gradle.api.artifacts.ResolvedDependency
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -16,9 +15,9 @@ import java.io.File
|
|||||||
internal class GradleNodeModulesCache(nodeJs: NodeJsRootExtension) : AbstractNodeModulesCache(nodeJs) {
|
internal class GradleNodeModulesCache(nodeJs: NodeJsRootExtension) : AbstractNodeModulesCache(nodeJs) {
|
||||||
override fun buildImportedPackage(
|
override fun buildImportedPackage(
|
||||||
dependency: ResolvedDependency,
|
dependency: ResolvedDependency,
|
||||||
artifact: ResolvedArtifact
|
file: File
|
||||||
): File? {
|
): File? {
|
||||||
val module = GradleNodeModuleBuilder(project, dependency, listOf(artifact), this)
|
val module = GradleNodeModuleBuilder(project, dependency, listOf(file), this)
|
||||||
module.visitArtifacts()
|
module.visitArtifacts()
|
||||||
return module.rebuild()
|
return module.rebuild()
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -250,7 +250,7 @@ internal class KotlinCompilationNpmResolver(
|
|||||||
?: error("Unresolved dependent npm package: ${this@KotlinCompilationNpmResolver} -> $it")
|
?: error("Unresolved dependent npm package: ${this@KotlinCompilationNpmResolver} -> $it")
|
||||||
}
|
}
|
||||||
val importedExternalGradleDependencies = externalGradleDependencies.mapNotNull {
|
val importedExternalGradleDependencies = externalGradleDependencies.mapNotNull {
|
||||||
resolver.gradleNodeModules.get(it.dependency, it.artifact)
|
resolver.gradleNodeModules.get(it.dependency, it.artifact.file)
|
||||||
}
|
}
|
||||||
|
|
||||||
val packageJson = PackageJson(
|
val packageJson = PackageJson(
|
||||||
|
|||||||
Reference in New Issue
Block a user