[Gradle, JS] Store npm dependencies by compilation
This commit is contained in:
+1
-2
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
@@ -146,7 +145,7 @@ abstract class KotlinJsIrSubTarget(
|
||||
}
|
||||
|
||||
if (it.enabled) {
|
||||
nodeJs.taskRequirements.addTaskRequirements(it as RequiresNpmDependencies)
|
||||
nodeJs.taskRequirements.addTaskRequirements(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+15
-11
@@ -12,27 +12,31 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
|
||||
|
||||
class TasksRequirements {
|
||||
private val _byTask = mutableMapOf<RequiresNpmDependencies, Set<RequiredKotlinJsDependency>>()
|
||||
private val byCompilation = mutableMapOf<KotlinJsCompilation, MutableSet<RequiresNpmDependencies>>()
|
||||
private val byCompilation = mutableMapOf<KotlinJsCompilation, MutableSet<NpmDependency>>()
|
||||
|
||||
val byTask: Map<RequiresNpmDependencies, Set<RequiredKotlinJsDependency>>
|
||||
get() = _byTask
|
||||
|
||||
fun getCompilationNpmRequirements(compilation: KotlinJsCompilation): List<NpmDependency> =
|
||||
fun getCompilationNpmRequirements(compilation: KotlinJsCompilation): Set<NpmDependency> =
|
||||
byCompilation[compilation]
|
||||
?.asSequence()
|
||||
?.flatMap { it.requiredNpmDependencies.asSequence() }
|
||||
?.map { it.createDependency(compilation.target.project) }
|
||||
?.filterIsInstance<NpmDependency>()
|
||||
?.toList()
|
||||
?: listOf()
|
||||
?: setOf()
|
||||
|
||||
fun addTaskRequirements(task: RequiresNpmDependencies) {
|
||||
val requirements = task.requiredNpmDependencies
|
||||
|
||||
_byTask[task] = requirements
|
||||
|
||||
byCompilation
|
||||
.getOrPut(task.compilation) { mutableSetOf() }
|
||||
.add(task)
|
||||
val requiredNpmDependencies = task.requiredNpmDependencies
|
||||
.asSequence()
|
||||
.map { it.createDependency(task.compilation.target.project) }
|
||||
.filterIsInstance<NpmDependency>()
|
||||
.toMutableSet()
|
||||
|
||||
val compilation = task.compilation
|
||||
if (compilation in byCompilation) {
|
||||
byCompilation[compilation]!!.addAll(requiredNpmDependencies)
|
||||
} else {
|
||||
byCompilation[compilation] = requiredNpmDependencies
|
||||
}
|
||||
}
|
||||
}
|
||||
-1
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
||||
|
||||
interface RequiresNpmDependencies {
|
||||
|
||||
val compilation: KotlinJsCompilation
|
||||
val nodeModulesRequired: Boolean
|
||||
val requiredNpmDependencies: Set<RequiredKotlinJsDependency>
|
||||
|
||||
+1
-2
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
@@ -136,7 +135,7 @@ abstract class KotlinJsSubTarget(
|
||||
}
|
||||
|
||||
if (it.enabled) {
|
||||
nodeJs.taskRequirements.addTaskRequirements(it as RequiresNpmDependencies)
|
||||
nodeJs.taskRequirements.addTaskRequirements(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user