[Gradle, JS] Use transient for compilation npm resolver

This commit is contained in:
Ilya Goncharov
2020-10-16 15:53:22 +03:00
committed by Alexander Likhachev
parent 60da9281a2
commit cd0dfd6fa9
4 changed files with 60 additions and 36 deletions
@@ -125,17 +125,18 @@ fun fromSrcPackageJson(packageJson: File?): PackageJson? =
}
fun packageJson(
npmProject: NpmProject,
name: String,
version: String,
main: String,
npmDependencies: Collection<NpmDependency>
): PackageJson {
val compilation = npmProject.compilation
val packageJson = PackageJson(
npmProject.name,
fixSemver(compilation.target.project.version.toString())
name,
fixSemver(version)
)
packageJson.main = npmProject.main
packageJson.main = main
val dependencies = mutableMapOf<String, String>()
@@ -154,9 +155,9 @@ fun packageJson(
}
}
compilation.packageJsonHandlers.forEach {
it(packageJson)
}
// compilation.packageJsonHandlers.forEach {
// it(packageJson)
// }
return packageJson
}
@@ -70,24 +70,24 @@ constructor(
fun resolve() {
val compilation = npmProject.compilation
packageJson(npmProject, realExternalDependencies).let { packageJson ->
packageJson.main = "${npmProject.name}.js"
if (compilation is KotlinJsIrCompilation) {
packageJson.types = "${npmProject.name}.d.ts"
}
packageJson.apply {
listOf(
dependencies,
devDependencies,
peerDependencies,
optionalDependencies
).forEach { it.processDependencies() }
}
packageJson.saveTo(this@PublicPackageJsonTask.packageJsonFile)
}
// packageJson(npmProject, realExternalDependencies).let { packageJson ->
// packageJson.main = "${npmProject.name}.js"
//
// if (compilation is KotlinJsIrCompilation) {
// packageJson.types = "${npmProject.name}.d.ts"
// }
//
// packageJson.apply {
// listOf(
// dependencies,
// devDependencies,
// peerDependencies,
// optionalDependencies
// ).forEach { it.processDependencies() }
// }
//
// packageJson.saveTo(this@PublicPackageJsonTask.packageJsonFile)
// }
}
private fun MutableMap<String, String>.processDependencies() {
@@ -16,12 +16,17 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
*/
class KotlinCompilationNpmResolution(
@Transient
val project: Project,
private val _project: Project?,
@Transient
val npmProject: NpmProject,
private val _npmProject: NpmProject?,
val internalDependencies: Collection<KotlinCompilationNpmResolution>,
val internalCompositeDependencies: Collection<GradleNodeModule>,
val externalGradleDependencies: Collection<GradleNodeModule>,
val externalNpmDependencies: Collection<NpmDependency>,
val packageJson: PackageJson
)
) {
val project
get() = _project!!
val npmProject
get() = _npmProject!!
}
@@ -62,6 +62,22 @@ internal class KotlinCompilationNpmResolver(
@Transient
val npmProject = compilation.npmProject
val npmName by lazy {
npmProject.name
}
val npmVersion by lazy {
project.version.toString()
}
val npmMain by lazy {
npmProject.main
}
val prePackageJsonFile by lazy {
npmProject.prePackageJsonFile
}
val nodeJs get() = resolver.nodeJs
val target get() = compilation.target
@@ -405,7 +421,9 @@ internal class KotlinCompilationNpmResolver(
val allNpmDependencies = externalNpmDependencies/* + toolsNpmDependencies*/
val packageJson = packageJson(
npmProject,
npmName,
npmVersion,
npmMain,
allNpmDependencies
)
@@ -421,17 +439,17 @@ internal class KotlinCompilationNpmResolver(
packageJson.dependencies[it.name] = fileVersion(it.path)
}
compilation.packageJsonHandlers.forEach {
it(packageJson)
}
// compilation.packageJsonHandlers.forEach {
// it(packageJson)
// }
if (!skipWriting) {
packageJson.saveTo(npmProject.prePackageJsonFile)
packageJson.saveTo(prePackageJsonFile)
}
return KotlinCompilationNpmResolution(
project,
npmProject,
if (compilation != null) project else null,
if (compilation != null) npmProject else null,
resolvedInternalDependencies,
compositeDependencies,
importedExternalGradleDependencies,