[Gradle, JS] First steps for npm dependencies in root

This commit is contained in:
Ilya Goncharov
2019-11-21 19:16:08 +03:00
parent f73fc5199b
commit 26cd392a9a
@@ -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<Project> {
@@ -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>(npm::class.java),
"npm",
npm
)
val kotlinExtension = project.kotlinExtension as KotlinJsProjectExtension
configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion)