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