[Gradle, JS] KT-36784 Add additional args for npm install

#KT-32466 fixed
#KT-36784 fixed
#KT-36864 fixed
This commit is contained in:
Ilya Goncharov
2020-03-31 10:44:39 +03:00
parent 14f0091c84
commit ccf5a2b4ad
8 changed files with 53 additions and 7 deletions
@@ -13,6 +13,20 @@ kotlin.js {
nodejs()
}
rootProject.tasks
.withType(org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask::class.java)
.named("kotlinNpmInstall")
.configure {
args.addAll(
listOf(
"--network-concurrency",
"1",
"--mutex",
"network"
)
)
}
dependencies {
implementation(kotlin("stdlib-js"))
implementation("com.example:lib2")
@@ -12,6 +12,20 @@ repositories {
kotlin.target.nodejs()
rootProject.tasks
.withType(org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask::class.java)
.named("kotlinNpmInstall")
.configure {
args.addAll(
listOf(
"--network-concurrency",
"1",
"--mutex",
"network"
)
)
}
dependencies {
implementation(kotlin("stdlib-js"))
implementation(npm("async", "2.6.2"))
@@ -20,7 +20,8 @@ interface NpmApi {
fun resolveRootProject(
rootProject: Project,
subProjects: Collection<KotlinCompilationNpmResolution>,
skipExecution: Boolean
skipExecution: Boolean,
vararg cliArgs: String
)
fun resolveDependency(
@@ -110,7 +110,12 @@ internal class KotlinRootNpmResolver internal constructor(
val hasNodeModulesDependentTasks = projectResolvers.values.any { it.taskRequirements.hasNodeModulesDependentTasks }
if (hasNodeModulesDependentTasks) {
nodeJs.packageManager.resolveRootProject(rootProject, allNpmPackages, upToDate)
nodeJs.packageManager.resolveRootProject(
rootProject,
allNpmPackages,
upToDate,
*nodeJs.npmInstallTask.args.toTypedArray()
)
}
nodeJs.rootNodeModulesStateFile.writeText(System.currentTimeMillis().toString())
@@ -6,11 +6,11 @@
package org.jetbrains.kotlin.gradle.targets.js.npm.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import java.io.File
open class KotlinNpmInstallTask : DefaultTask() {
@@ -21,6 +21,9 @@ open class KotlinNpmInstallTask : DefaultTask() {
private val nodeJs get() = NodeJsRootPlugin.apply(project.rootProject)
private val resolutionManager get() = nodeJs.npmResolutionManager
@Input
val args: MutableList<String> = mutableListOf()
@Suppress("unused")
@get:InputFiles
val packageJsonFiles: Collection<File>
@@ -38,6 +38,13 @@ class Yarn : NpmApi {
override fun resolveRootProject(
rootProject: Project,
subProjects: Collection<KotlinCompilationNpmResolution>,
skipExecution: Boolean
) = getDelegate(rootProject.project).resolveRootProject(rootProject, subProjects, skipExecution)
skipExecution: Boolean,
vararg cliArgs: String
) = getDelegate(rootProject.project)
.resolveRootProject(
rootProject,
subProjects,
skipExecution,
*cliArgs
)
}
@@ -25,6 +25,7 @@ class YarnSimple : YarnBasics() {
override fun resolveRootProject(
rootProject: Project,
subProjects: Collection<KotlinCompilationNpmResolution>,
skipExecution: Boolean
skipExecution: Boolean,
vararg cliArgs: String
) = Unit
}
@@ -19,7 +19,8 @@ class YarnWorkspaces : YarnBasics() {
override fun resolveRootProject(
rootProject: Project,
subProjects: Collection<KotlinCompilationNpmResolution>,
skipExecution: Boolean
skipExecution: Boolean,
vararg cliArgs: String
) {
check(rootProject == rootProject.rootProject)
if (!skipExecution) setup(rootProject)