From 1997b4ff4385d30b5d2e3a5a24a132bb64b2bd73 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 25 Jan 2023 15:58:12 +0100 Subject: [PATCH] [Gradle, JS] A bit change of npm resolution manager registering --- .../targets/js/nodejs/NodeJsRootPlugin.kt | 26 +++++++++++++++++++ .../gradle/targets/js/yarn/YarnPlugin.kt | 4 ++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootPlugin.kt index 78be25d99f3..94036863849 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootPlugin.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.targets.js.MultiplePluginDeclarationDetector import org.jetbrains.kotlin.gradle.targets.js.npm.CompositeNodeModulesCache import org.jetbrains.kotlin.gradle.targets.js.npm.GradleNodeModulesCache import org.jetbrains.kotlin.gradle.targets.js.npm.KotlinNpmResolutionManager +import org.jetbrains.kotlin.gradle.targets.js.npm.UsesKotlinNpmResolutionManager import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinRootNpmResolver import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmCachesSetup @@ -21,6 +22,9 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin import org.jetbrains.kotlin.gradle.tasks.CleanDataTask import org.jetbrains.kotlin.gradle.tasks.registerTask +import org.jetbrains.kotlin.gradle.tasks.withType +import org.jetbrains.kotlin.gradle.utils.* +import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject import org.jetbrains.kotlin.gradle.utils.castIsolatedKotlinPluginClassLoaderAware import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat import org.jetbrains.kotlin.gradle.utils.markResolvable @@ -146,6 +150,20 @@ open class NodeJsRootPlugin : Plugin { val Project.kotlinNodeJsExtension: NodeJsRootExtension get() = extensions.getByName(NodeJsRootExtension.EXTENSION_NAME).castIsolatedKotlinPluginClassLoaderAware() + private val Project.gradleNodeModules + get() = GradleNodeModulesCache.registerIfAbsent( + this, + null, + null + ) + + private val Project.compositeNodeModules + get() = CompositeNodeModulesCache.registerIfAbsent( + this, + null, + null + ) + val Project.kotlinNpmResolutionManager: Provider get() { val npmResolutionManager = project.gradle.sharedServices.registerIfAbsent( @@ -155,6 +173,14 @@ open class NodeJsRootPlugin : Plugin { error("Must be already registered") } + SingleActionPerProject.run(project, UsesKotlinNpmResolutionManager::class.java.name) { + project.tasks.withType().configureEach { task -> + task.usesService(npmResolutionManager) + task.usesService(gradleNodeModules) + task.usesService(compositeNodeModules) + } + } + return npmResolutionManager } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnPlugin.kt index a86565e7a4b..0f614669ea9 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnPlugin.kt @@ -48,13 +48,15 @@ open class YarnPlugin : Plugin { } } + val kotlinNpmResolutionManager = project.kotlinNpmResolutionManager + val rootPackageJson = tasks.register(RootPackageJsonTask.NAME, RootPackageJsonTask::class.java) { task -> task.dependsOn(nodeJsTaskProviders.npmCachesSetupTaskProvider) task.group = NodeJsRootPlugin.TASKS_GROUP_NAME task.description = "Create root package.json" task.npmResolutionManager.apply { - set(project.kotlinNpmResolutionManager) + set(kotlinNpmResolutionManager) disallowChanges() }