From 26cd392a9a845a749250f0cff476b760f21652e0 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 21 Nov 2019 19:16:08 +0300 Subject: [PATCH] [Gradle, JS] First steps for npm dependencies in root --- .../gradle/targets/js/KotlinJsPlugin.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) 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)