[Gradle, JS] Declare default configurations in js single plugin

Because in Kotlin DSL we want to declare configurations in methods instead of extensions of Strings
We need to create configurations explicitly in plugin
This commit is contained in:
Ilya Goncharov
2020-02-18 16:50:39 +03:00
parent f3f818edc3
commit 13594c80aa
@@ -10,10 +10,12 @@ import org.gradle.api.Project
import org.gradle.api.plugins.JavaBasePlugin
import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.TEST_COMPILATION_NAME
import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
import org.jetbrains.kotlin.gradle.utils.*
open class KotlinJsPlugin(
private val kotlinPluginVersion: String
@@ -34,5 +36,30 @@ open class KotlinJsPlugin(
irPreset = KotlinJsIrSingleTargetPreset(project, kotlinPluginVersion)
legacyPreset = KotlinJsSingleTargetPreset(project, kotlinPluginVersion)
}
// Explicitly create configurations for main and test
// It is because in single platform we want to declare dependencies with methods not with strings in Kotlin DSL
// implementation("foo") instead of "implementation"("foo")
val configurations = project.configurations
listOf(MAIN_COMPILATION_NAME, TEST_COMPILATION_NAME)
// in main compilation we don't need additional name
.map { it.removeSuffix(MAIN_COMPILATION_NAME) }
.forEach { baseCompilationName ->
listOf(
COMPILE_ONLY,
COMPILE,
IMPLEMENTATION,
API,
RUNTIME_ONLY,
RUNTIME
).forEach { baseConfigurationName ->
configurations.maybeCreate(
lowerCamelCaseName(
baseCompilationName,
baseConfigurationName
)
)
}
}
}
}