[Gradle, JS] Activate root npm dependency declaration for multiplatform
This commit is contained in:
+3
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetFactory
|
||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.addNpmDependencyExtension
|
||||
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_COMPILER_EMBEDDABLE
|
||||
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_MODULE_GROUP
|
||||
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestsRegistry
|
||||
@@ -80,6 +81,8 @@ abstract class KotlinBasePluginWrapper(
|
||||
setupAttributeMatchingStrategy(project)
|
||||
|
||||
plugin.apply(project)
|
||||
|
||||
project.addNpmDependencyExtension()
|
||||
}
|
||||
|
||||
internal open fun createTestRegistry(project: Project) = KotlinTestsRegistry(project)
|
||||
|
||||
-67
@@ -5,25 +5,15 @@
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js
|
||||
|
||||
import groovy.lang.Closure
|
||||
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 {
|
||||
operator fun invoke(packageName: String, version: String = "*"): NpmDependency
|
||||
|
||||
operator fun invoke(org: String, packageName: String, version: String = "*"): NpmDependency
|
||||
}
|
||||
|
||||
open class KotlinJsPlugin(
|
||||
private val kotlinPluginVersion: String
|
||||
) : Plugin<Project> {
|
||||
@@ -36,63 +26,6 @@ open class KotlinJsPlugin(
|
||||
|
||||
checkGradleCompatibility()
|
||||
|
||||
val dependencies = project.dependencies as ExtensionAware
|
||||
|
||||
val npm: Npm = object : Npm, Closure<NpmDependency>(dependencies) {
|
||||
override operator fun invoke(packageName: String, version: String): NpmDependency {
|
||||
return NpmDependency(project, null, packageName, version)
|
||||
}
|
||||
|
||||
override operator fun invoke(org: String, packageName: String, version: String): NpmDependency {
|
||||
return NpmDependency(project, org, packageName, version)
|
||||
}
|
||||
|
||||
override fun call(vararg args: Any?): NpmDependency {
|
||||
val size = args.size
|
||||
if (size > 3) throw IllegalArgumentException(
|
||||
"""
|
||||
Unable to add NPM dependency by $args
|
||||
- npm('packageName') -> packageName:*
|
||||
- npm('packageName', 'version') -> packageName:version
|
||||
- npm('org', 'packageName', 'version') -> org/packageName:version
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
if (size == 3) {
|
||||
val (org, packageName, version) = args
|
||||
.map { it as String }
|
||||
|
||||
return invoke(
|
||||
org = org,
|
||||
packageName = packageName,
|
||||
version = version
|
||||
)
|
||||
}
|
||||
|
||||
val packageName = args[0] as String
|
||||
val version = if (size > 1) args[1] as String else null
|
||||
|
||||
return if (version != null) {
|
||||
invoke(
|
||||
packageName = packageName,
|
||||
version = version
|
||||
)
|
||||
} else {
|
||||
invoke(
|
||||
packageName = packageName
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies
|
||||
.extensions
|
||||
.add(
|
||||
typeOf<Npm>(Npm::class.java),
|
||||
"npm",
|
||||
npm
|
||||
)
|
||||
|
||||
val kotlinExtension = project.kotlinExtension as KotlinJsProjectExtension
|
||||
configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion)
|
||||
|
||||
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.npm
|
||||
|
||||
import groovy.lang.Closure
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.plugins.ExtensionAware
|
||||
import org.gradle.api.reflect.TypeOf
|
||||
|
||||
interface NpmDependencyExtension {
|
||||
operator fun invoke(packageName: String, version: String = "*"): NpmDependency
|
||||
|
||||
operator fun invoke(org: String, packageName: String, version: String = "*"): NpmDependency
|
||||
}
|
||||
|
||||
fun Project.addNpmDependencyExtension() {
|
||||
val dependencies = this.dependencies as ExtensionAware
|
||||
|
||||
val npmDependencyExtension: NpmDependencyExtension = object : NpmDependencyExtension, Closure<NpmDependency>(dependencies) {
|
||||
override operator fun invoke(packageName: String, version: String): NpmDependency {
|
||||
return NpmDependency(this@addNpmDependencyExtension, null, packageName, version)
|
||||
}
|
||||
|
||||
override operator fun invoke(org: String, packageName: String, version: String): NpmDependency {
|
||||
return NpmDependency(this@addNpmDependencyExtension, org, packageName, version)
|
||||
}
|
||||
|
||||
override fun call(vararg args: Any?): NpmDependency {
|
||||
val size = args.size
|
||||
if (size > 3) throw IllegalArgumentException(
|
||||
"""
|
||||
Unable to add NPM dependency by $args
|
||||
- npm('packageName') -> packageName:*
|
||||
- npm('packageName', 'version') -> packageName:version
|
||||
- npm('org', 'packageName', 'version') -> org/packageName:version
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
if (size == 3) {
|
||||
val (org, packageName, version) = args
|
||||
.map { it as String }
|
||||
|
||||
return invoke(
|
||||
org = org,
|
||||
packageName = packageName,
|
||||
version = version
|
||||
)
|
||||
}
|
||||
|
||||
val packageName = args[0] as String
|
||||
val version = if (size > 1) args[1] as String else null
|
||||
|
||||
return if (version != null) {
|
||||
invoke(
|
||||
packageName = packageName,
|
||||
version = version
|
||||
)
|
||||
} else {
|
||||
invoke(
|
||||
packageName = packageName
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies
|
||||
.extensions
|
||||
.add(
|
||||
TypeOf.typeOf<NpmDependencyExtension>(NpmDependencyExtension::class.java),
|
||||
"npm",
|
||||
npmDependencyExtension
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user