Gradle, js, npm: support scopes
This commit is contained in:
+4
-4
@@ -47,15 +47,15 @@ class NpmVersions {
|
||||
}
|
||||
|
||||
interface RequiredKotlinJsDependency {
|
||||
fun createDependency(project: Project): Dependency
|
||||
fun createDependency(project: Project, scope: NpmDependency.Scope = NpmDependency.Scope.DEV): Dependency
|
||||
}
|
||||
|
||||
data class NpmPackageVersion(val name: String, var version: String) : RequiredKotlinJsDependency {
|
||||
override fun createDependency(project: Project): Dependency =
|
||||
NpmDependency(project, null, name, version)
|
||||
override fun createDependency(project: Project, scope: NpmDependency.Scope): Dependency =
|
||||
NpmDependency(project, null, name, version, scope)
|
||||
}
|
||||
|
||||
data class KotlinGradleNpmPackage(val simpleModuleName: String) : RequiredKotlinJsDependency {
|
||||
override fun createDependency(project: Project): Dependency =
|
||||
override fun createDependency(project: Project, scope: NpmDependency.Scope): Dependency =
|
||||
project.dependencies.create("org.jetbrains.kotlin:kotlin-$simpleModuleName")
|
||||
}
|
||||
|
||||
+9
-1
@@ -23,12 +23,20 @@ data class NpmDependency(
|
||||
internal val project: Project,
|
||||
private val org: String?,
|
||||
private val name: String,
|
||||
private val version: String
|
||||
private val version: String,
|
||||
val scope: Scope = Scope.NORMAL
|
||||
) : SelfResolvingDependency,
|
||||
SelfResolvingDependencyInternal,
|
||||
ResolvableDependency,
|
||||
FileCollectionDependency {
|
||||
|
||||
enum class Scope {
|
||||
NORMAL,
|
||||
DEV,
|
||||
OPTIONAL,
|
||||
PEER
|
||||
}
|
||||
|
||||
override fun getGroup(): String? = org
|
||||
|
||||
internal var parent: NpmDependency? = null
|
||||
|
||||
+3
@@ -31,6 +31,9 @@ class PackageJson(
|
||||
|
||||
val devDependencies = mutableMapOf<String, String>()
|
||||
val dependencies = mutableMapOf<String, String>()
|
||||
val peerDependencies = mutableMapOf<String, String>()
|
||||
val optionalDependencies = mutableMapOf<String, String>()
|
||||
val bundledDependencies = mutableListOf<String>()
|
||||
|
||||
companion object {
|
||||
fun scopedName(name: String): ScopedName = if (name.contains("/")) ScopedName(
|
||||
|
||||
+8
-2
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.fixSemver
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency.Scope.*
|
||||
import java.io.File
|
||||
import java.io.Serializable
|
||||
|
||||
@@ -204,7 +205,7 @@ internal class KotlinCompilationNpmResolver(
|
||||
get() = PackageJsonProducerInputs(
|
||||
internalDependencies.map { it.npmProject.name },
|
||||
externalGradleDependencies.map { it.artifact.file },
|
||||
externalNpmDependencies.map { "${it.key}:${it.version}" }
|
||||
externalNpmDependencies.map { "${it.scope} ${it.key}:${it.version}" }
|
||||
)
|
||||
|
||||
fun createPackageJson(skipWriting: Boolean): KotlinCompilationNpmResolution {
|
||||
@@ -232,7 +233,12 @@ internal class KotlinCompilationNpmResolver(
|
||||
}
|
||||
|
||||
externalNpmDependencies.forEach {
|
||||
packageJson.dependencies[it.key] = chooseVersion(packageJson.dependencies[it.key], it.version)
|
||||
when (it.scope) {
|
||||
NORMAL -> packageJson.dependencies[it.key] = chooseVersion(packageJson.dependencies[it.key], it.version)
|
||||
DEV -> packageJson.devDependencies[it.key] = chooseVersion(packageJson.devDependencies[it.key], it.version)
|
||||
OPTIONAL -> packageJson.optionalDependencies[it.key] = chooseVersion(packageJson.optionalDependencies[it.key], it.version)
|
||||
PEER -> packageJson.peerDependencies[it.key] = chooseVersion(packageJson.peerDependencies[it.key], it.version)
|
||||
}
|
||||
}
|
||||
|
||||
compilation.packageJsonHandlers.forEach {
|
||||
|
||||
Reference in New Issue
Block a user