[Gradle, JS] Backport possibility to disable granular workspaces

This commit is contained in:
Ilya Goncharov
2020-05-21 15:53:41 +03:00
parent 60515aad77
commit f064634eb0
@@ -1,14 +1,17 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.targets.js.yarn
import org.gradle.api.Incubating
import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.internal.ConfigurationPhaseAware
import org.jetbrains.kotlin.gradle.logging.kotlinInfo
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.RootPackageJsonTask
import org.jetbrains.kotlin.gradle.tasks.internal.CleanableStore
open class YarnRootExtension(val project: Project) : ConfigurationPhaseAware<YarnEnv>() {
@@ -33,6 +36,21 @@ open class YarnRootExtension(val project: Project) : ConfigurationPhaseAware<Yar
val useWorkspaces: Boolean
get() = !disableWorkspaces
val rootPackageJsonTaskProvider: TaskProvider<RootPackageJsonTask>
get() = project.tasks
.withType(RootPackageJsonTask::class.java)
.named(RootPackageJsonTask.NAME)
@Incubating
fun disableGranularWorkspaces() {
val packageJsonUmbrella = NodeJsRootPlugin.apply(project)
.packageJsonUmbrellaTaskProvider
rootPackageJsonTaskProvider.configure {
it.dependsOn(packageJsonUmbrella)
}
}
override fun finalizeConfiguration(): YarnEnv {
val cleanableStore = CleanableStore[installationDir.path]