diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/KotlinDependencyScope.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/KotlinDependencyScope.kt index c7dac47f0aa..6feb965ecd0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/KotlinDependencyScope.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/sources/KotlinDependencyScope.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.plugin.sources import org.gradle.api.Project import org.gradle.api.artifacts.Configuration +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope.* import org.jetbrains.kotlin.gradle.utils.API @@ -31,6 +32,19 @@ internal fun Project.sourceSetDependencyConfigurationByScope(sourceSet: KotlinSo } ) +internal fun Project.compilationDependencyConfigurationByScope( + compilation: KotlinCompilation<*>, + scope: KotlinDependencyScope +): Configuration = + project.configurations.getByName( + when (scope) { + API_SCOPE -> compilation.apiConfigurationName + IMPLEMENTATION_SCOPE -> compilation.implementationConfigurationName + COMPILE_ONLY_SCOPE -> compilation.compileOnlyConfigurationName + RUNTIME_ONLY_SCOPE -> compilation.runtimeOnlyConfigurationName + } + ) + internal fun Project.sourceSetMetadataConfigurationByScope(sourceSet: KotlinSourceSet, scope: KotlinDependencyScope): Configuration = project.configurations.getByName( when (scope) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt index a046efc7673..b5813f68767 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages import org.jetbrains.kotlin.gradle.plugin.mpp.disambiguateName import org.jetbrains.kotlin.gradle.plugin.mpp.isMain import org.jetbrains.kotlin.gradle.plugin.sources.KotlinDependencyScope +import org.jetbrains.kotlin.gradle.plugin.sources.compilationDependencyConfigurationByScope import org.jetbrains.kotlin.gradle.plugin.sources.sourceSetDependencyConfigurationByScope import org.jetbrains.kotlin.gradle.plugin.usesPlatformOf import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget @@ -133,10 +134,15 @@ internal class KotlinCompilationNpmResolver( all.isCanBeResolved = true all.description = "NPM configuration for $compilation." - compilation.allKotlinSourceSets.forEach { sourceSet -> - KotlinDependencyScope.values().forEach { scope -> - val configuration = project.sourceSetDependencyConfigurationByScope(sourceSet, scope) - all.extendsFrom(configuration) + KotlinDependencyScope.values().forEach { scope -> + val compilationConfiguration = project.compilationDependencyConfigurationByScope( + compilation, + scope + ) + all.extendsFrom(compilationConfiguration) + compilation.allKotlinSourceSets.forEach { sourceSet -> + val sourceSetConfiguration = project.sourceSetDependencyConfigurationByScope(sourceSet, scope) + all.extendsFrom(sourceSetConfiguration) } }