From 065b00c3d7f98d32d02b734f30a6d333a8c73cd2 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 25 Jan 2023 14:14:35 +0100 Subject: [PATCH] [Gradle, JS] Fix set npmResolutionManager inside YarnPlugin --- .../kotlin/gradle/targets/js/yarn/YarnPlugin.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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 c0d3a338341..b1d3a8407b5 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 @@ -7,12 +7,14 @@ package org.jetbrains.kotlin.gradle.targets.js.yarn import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.provider.Provider import org.gradle.api.tasks.TaskProvider import org.jetbrains.kotlin.gradle.utils.markResolvable import org.jetbrains.kotlin.gradle.targets.js.MultiplePluginDeclarationDetector import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.Companion.kotlinNodeJsExtension import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.Companion.kotlinNpmResolutionManager +import org.jetbrains.kotlin.gradle.targets.js.npm.KotlinNpmResolutionManager import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.implementing import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask @@ -22,6 +24,7 @@ import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockCopyTask.Companion.ST import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockCopyTask.Companion.UPGRADE_YARN_LOCK import org.jetbrains.kotlin.gradle.tasks.CleanDataTask import org.jetbrains.kotlin.gradle.tasks.registerTask +import org.jetbrains.kotlin.gradle.utils.providerWithLazyConvention open class YarnPlugin : Plugin { override fun apply(project: Project): Unit = project.run { @@ -46,13 +49,20 @@ open class YarnPlugin : Plugin { } } + val objectFactory = project.objects + 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) + // npmResolutionManager is initialised inside NodeJsRootPlugin after YarnPlugin applied + set( + objectFactory.providerWithLazyConvention { + project.kotlinNpmResolutionManager.get() + } + ) disallowChanges() } @@ -83,7 +93,7 @@ open class YarnPlugin : Plugin { it.dependsOn(packageJsonUmbrella) } - val storeYarnLock = tasks.register(STORE_YARN_LOCK_NAME, YarnLockStoreTask::class.java) { task -> + tasks.register(STORE_YARN_LOCK_NAME, YarnLockStoreTask::class.java) { task -> task.dependsOn(kotlinNpmInstall) task.inputFile.set(nodeJs.rootPackageDir.resolve("yarn.lock")) task.outputDirectory.set(yarnRootExtension.lockFileDirectory)