diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/build.gradle.kts index 2aeee564f33..7898a131d78 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/app/build.gradle.kts @@ -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") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts index da9eec6f68e..2fa3109144b 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/js-composite-build/lib/build.gradle.kts @@ -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")) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmApi.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmApi.kt index 09289ae6e62..c7a90276338 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmApi.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/NpmApi.kt @@ -20,7 +20,8 @@ interface NpmApi { fun resolveRootProject( rootProject: Project, subProjects: Collection, - skipExecution: Boolean + skipExecution: Boolean, + vararg cliArgs: String ) fun resolveDependency( diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt index 09b6728c87f..f91540fb3b1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt @@ -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()) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt index 9520aa8f4a8..7577ade120e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt @@ -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 = mutableListOf() + @Suppress("unused") @get:InputFiles val packageJsonFiles: Collection diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/Yarn.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/Yarn.kt index 47320ab1a4e..78dbf6aa453 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/Yarn.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/Yarn.kt @@ -38,6 +38,13 @@ class Yarn : NpmApi { override fun resolveRootProject( rootProject: Project, subProjects: Collection, - skipExecution: Boolean - ) = getDelegate(rootProject.project).resolveRootProject(rootProject, subProjects, skipExecution) + skipExecution: Boolean, + vararg cliArgs: String + ) = getDelegate(rootProject.project) + .resolveRootProject( + rootProject, + subProjects, + skipExecution, + *cliArgs + ) } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnSimple.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnSimple.kt index 85ccfa91ad9..c1af695d458 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnSimple.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnSimple.kt @@ -25,6 +25,7 @@ class YarnSimple : YarnBasics() { override fun resolveRootProject( rootProject: Project, subProjects: Collection, - skipExecution: Boolean + skipExecution: Boolean, + vararg cliArgs: String ) = Unit } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnWorkspaces.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnWorkspaces.kt index c6712f9edc8..e3f59852df8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnWorkspaces.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/yarn/YarnWorkspaces.kt @@ -19,7 +19,8 @@ class YarnWorkspaces : YarnBasics() { override fun resolveRootProject( rootProject: Project, subProjects: Collection, - skipExecution: Boolean + skipExecution: Boolean, + vararg cliArgs: String ) { check(rootProject == rootProject.rootProject) if (!skipExecution) setup(rootProject)