[Gradle, JS] First steps for npm dependencies in root
This commit is contained in:
+23
@@ -7,13 +7,26 @@ package org.jetbrains.kotlin.gradle.targets.js
|
|||||||
|
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.plugins.ExtensionAware
|
||||||
import org.gradle.api.plugins.JavaBasePlugin
|
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.KotlinJsProjectExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy
|
import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
|
||||||
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
|
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(
|
open class KotlinJsPlugin(
|
||||||
private val kotlinPluginVersion: String
|
private val kotlinPluginVersion: String
|
||||||
) : Plugin<Project> {
|
) : Plugin<Project> {
|
||||||
@@ -26,6 +39,16 @@ open class KotlinJsPlugin(
|
|||||||
|
|
||||||
checkGradleCompatibility()
|
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
|
val kotlinExtension = project.kotlinExtension as KotlinJsProjectExtension
|
||||||
configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion)
|
configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user