[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( fun packageJson(
npmProject: NpmProject, name: String,
version: String,
main: String,
npmDependencies: Collection<NpmDependency> npmDependencies: Collection<NpmDependency>
): PackageJson { ): PackageJson {
val compilation = npmProject.compilation
val packageJson = PackageJson( val packageJson = PackageJson(
npmProject.name, name,
fixSemver(compilation.target.project.version.toString()) fixSemver(version)
) )
packageJson.main = npmProject.main packageJson.main = main
val dependencies = mutableMapOf<String, String>() val dependencies = mutableMapOf<String, String>()
@@ -154,9 +155,9 @@ fun packageJson(
} }
} }
compilation.packageJsonHandlers.forEach { // compilation.packageJsonHandlers.forEach {
it(packageJson) // it(packageJson)
} // }
return packageJson return packageJson
} }
@@ -70,24 +70,24 @@ constructor(
fun resolve() { fun resolve() {
val compilation = npmProject.compilation val compilation = npmProject.compilation
packageJson(npmProject, realExternalDependencies).let { packageJson -> // packageJson(npmProject, realExternalDependencies).let { packageJson ->
packageJson.main = "${npmProject.name}.js" // packageJson.main = "${npmProject.name}.js"
//
if (compilation is KotlinJsIrCompilation) { // if (compilation is KotlinJsIrCompilation) {
packageJson.types = "${npmProject.name}.d.ts" // packageJson.types = "${npmProject.name}.d.ts"
} // }
//
packageJson.apply { // packageJson.apply {
listOf( // listOf(
dependencies, // dependencies,
devDependencies, // devDependencies,
peerDependencies, // peerDependencies,
optionalDependencies // optionalDependencies
).forEach { it.processDependencies() } // ).forEach { it.processDependencies() }
} // }
//
packageJson.saveTo(this@PublicPackageJsonTask.packageJsonFile) // packageJson.saveTo(this@PublicPackageJsonTask.packageJsonFile)
} // }
} }
private fun MutableMap<String, String>.processDependencies() { private fun MutableMap<String, String>.processDependencies() {
@@ -16,12 +16,17 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
*/ */
class KotlinCompilationNpmResolution( class KotlinCompilationNpmResolution(
@Transient @Transient
val project: Project, private val _project: Project?,
@Transient @Transient
val npmProject: NpmProject, private val _npmProject: NpmProject?,
val internalDependencies: Collection<KotlinCompilationNpmResolution>, val internalDependencies: Collection<KotlinCompilationNpmResolution>,
val internalCompositeDependencies: Collection<GradleNodeModule>, val internalCompositeDependencies: Collection<GradleNodeModule>,
val externalGradleDependencies: Collection<GradleNodeModule>, val externalGradleDependencies: Collection<GradleNodeModule>,
val externalNpmDependencies: Collection<NpmDependency>, val externalNpmDependencies: Collection<NpmDependency>,
val packageJson: PackageJson val packageJson: PackageJson
) ) {
val project
get() = _project!!
val npmProject
get() = _npmProject!!
}
@@ -62,6 +62,22 @@ internal class KotlinCompilationNpmResolver(
@Transient @Transient
val npmProject = compilation.npmProject 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 nodeJs get() = resolver.nodeJs
val target get() = compilation.target val target get() = compilation.target
@@ -405,7 +421,9 @@ internal class KotlinCompilationNpmResolver(
val allNpmDependencies = externalNpmDependencies/* + toolsNpmDependencies*/ val allNpmDependencies = externalNpmDependencies/* + toolsNpmDependencies*/
val packageJson = packageJson( val packageJson = packageJson(
npmProject, npmName,
npmVersion,
npmMain,
allNpmDependencies allNpmDependencies
) )
@@ -421,17 +439,17 @@ internal class KotlinCompilationNpmResolver(
packageJson.dependencies[it.name] = fileVersion(it.path) packageJson.dependencies[it.name] = fileVersion(it.path)
} }
compilation.packageJsonHandlers.forEach { // compilation.packageJsonHandlers.forEach {
it(packageJson) // it(packageJson)
} // }
if (!skipWriting) { if (!skipWriting) {
packageJson.saveTo(npmProject.prePackageJsonFile) packageJson.saveTo(prePackageJsonFile)
} }
return KotlinCompilationNpmResolution( return KotlinCompilationNpmResolution(
project, if (compilation != null) project else null,
npmProject, if (compilation != null) npmProject else null,
resolvedInternalDependencies, resolvedInternalDependencies,
compositeDependencies, compositeDependencies,
importedExternalGradleDependencies, importedExternalGradleDependencies,