From 48ec104a34175bb9d293aa52d283bad29e49ef78 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 10 Jun 2020 17:23:39 +0300 Subject: [PATCH] [Gradle, JS] Store npm dependencies by compilation --- .../targets/js/ir/KotlinJsIrSubTarget.kt | 3 +-- .../targets/js/nodejs/TasksRequirements.kt | 26 +++++++++++-------- .../targets/js/npm/RequiresNpmDependencies.kt | 1 - .../js/subtargets/KotlinJsSubTarget.kt | 3 +-- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt index 7811bdb381e..52d769016cd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt @@ -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) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/TasksRequirements.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/TasksRequirements.kt index b9237ef80ba..585cf530378 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/TasksRequirements.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/TasksRequirements.kt @@ -12,27 +12,31 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies class TasksRequirements { private val _byTask = mutableMapOf>() - private val byCompilation = mutableMapOf>() + private val byCompilation = mutableMapOf>() val byTask: Map> get() = _byTask - fun getCompilationNpmRequirements(compilation: KotlinJsCompilation): List = + fun getCompilationNpmRequirements(compilation: KotlinJsCompilation): Set = byCompilation[compilation] - ?.asSequence() - ?.flatMap { it.requiredNpmDependencies.asSequence() } - ?.map { it.createDependency(compilation.target.project) } - ?.filterIsInstance() - ?.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() + .toMutableSet() + + val compilation = task.compilation + if (compilation in byCompilation) { + byCompilation[compilation]!!.addAll(requiredNpmDependencies) + } else { + byCompilation[compilation] = requiredNpmDependencies + } } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/RequiresNpmDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/RequiresNpmDependencies.kt index ebcf69a9cf0..7eec39179fd 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/RequiresNpmDependencies.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/RequiresNpmDependencies.kt @@ -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 diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt index a2ff76d4a70..38f0276d7c1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinJsSubTarget.kt @@ -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) } } }