[Gradle, JS] Store npm dependencies by compilation

This commit is contained in:
Ilya Goncharov
2020-06-10 17:23:39 +03:00
parent 4080bd1325
commit 48ec104a34
4 changed files with 17 additions and 16 deletions
@@ -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)
}
}
}
@@ -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
}
}
}
@@ -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>
@@ -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)
}
}
}