[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.dsl.KotlinJsSubTargetDsl
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
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.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.npm.npmProject
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
|
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
@@ -146,7 +145,7 @@ abstract class KotlinJsIrSubTarget(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (it.enabled) {
|
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 {
|
class TasksRequirements {
|
||||||
private val _byTask = mutableMapOf<RequiresNpmDependencies, Set<RequiredKotlinJsDependency>>()
|
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>>
|
val byTask: Map<RequiresNpmDependencies, Set<RequiredKotlinJsDependency>>
|
||||||
get() = _byTask
|
get() = _byTask
|
||||||
|
|
||||||
fun getCompilationNpmRequirements(compilation: KotlinJsCompilation): List<NpmDependency> =
|
fun getCompilationNpmRequirements(compilation: KotlinJsCompilation): Set<NpmDependency> =
|
||||||
byCompilation[compilation]
|
byCompilation[compilation]
|
||||||
?.asSequence()
|
?: setOf()
|
||||||
?.flatMap { it.requiredNpmDependencies.asSequence() }
|
|
||||||
?.map { it.createDependency(compilation.target.project) }
|
|
||||||
?.filterIsInstance<NpmDependency>()
|
|
||||||
?.toList()
|
|
||||||
?: listOf()
|
|
||||||
|
|
||||||
fun addTaskRequirements(task: RequiresNpmDependencies) {
|
fun addTaskRequirements(task: RequiresNpmDependencies) {
|
||||||
val requirements = task.requiredNpmDependencies
|
val requirements = task.requiredNpmDependencies
|
||||||
|
|
||||||
_byTask[task] = requirements
|
_byTask[task] = requirements
|
||||||
|
|
||||||
byCompilation
|
val requiredNpmDependencies = task.requiredNpmDependencies
|
||||||
.getOrPut(task.compilation) { mutableSetOf() }
|
.asSequence()
|
||||||
.add(task)
|
.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
|
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
||||||
|
|
||||||
interface RequiresNpmDependencies {
|
interface RequiresNpmDependencies {
|
||||||
|
|
||||||
val compilation: KotlinJsCompilation
|
val compilation: KotlinJsCompilation
|
||||||
val nodeModulesRequired: Boolean
|
val nodeModulesRequired: Boolean
|
||||||
val requiredNpmDependencies: Set<RequiredKotlinJsDependency>
|
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.dsl.KotlinJsSubTargetDsl
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
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.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.npm.npmProject
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
|
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
@@ -136,7 +135,7 @@ abstract class KotlinJsSubTarget(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (it.enabled) {
|
if (it.enabled) {
|
||||||
nodeJs.taskRequirements.addTaskRequirements(it as RequiresNpmDependencies)
|
nodeJs.taskRequirements.addTaskRequirements(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user