diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt index 77be98adb0b..2ff77143528 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsPlugin.kt @@ -7,13 +7,26 @@ package org.jetbrains.kotlin.gradle.targets.js import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.plugins.ExtensionAware import org.gradle.api.plugins.JavaBasePlugin +import org.gradle.api.reflect.TypeOf.typeOf import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset +import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility +interface Npm : (String) -> NpmDependency + +fun Npm(lambda: (name: String) -> NpmDependency): Npm { + return object : Npm { + override fun invoke(name: String): NpmDependency { + return lambda(name) + } + } +} + open class KotlinJsPlugin( private val kotlinPluginVersion: String ) : Plugin { @@ -26,6 +39,16 @@ open class KotlinJsPlugin( checkGradleCompatibility() + val npm = Npm { name: String -> NpmDependency(project, null, name, "*") } + + (project.dependencies as ExtensionAware) + .extensions + .add( + typeOf(npm::class.java), + "npm", + npm + ) + val kotlinExtension = project.kotlinExtension as KotlinJsProjectExtension configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion)