[Gradle, JS] Existence of node_modules for up-to-date of kotlinNpmInstall
[Gradle, JS] No dev deps in packages_imported ^KT-57920 fixed
This commit is contained in:
committed by
Space Team
parent
7d37bb1f78
commit
d2c2a86cb7
+9
-7
@@ -67,20 +67,22 @@ open class NodeJsRootPlugin : Plugin<Project> {
|
||||
it.gradleNodeModules.set(gradleNodeModulesProvider)
|
||||
}
|
||||
|
||||
val npmInstall = project.registerTask<KotlinNpmInstallTask>(KotlinNpmInstallTask.NAME) {
|
||||
it.dependsOn(setupTask)
|
||||
it.dependsOn(setupFileHasherTask)
|
||||
it.group = TASKS_GROUP_NAME
|
||||
it.description = "Find, download and link NPM dependencies and projects"
|
||||
val npmInstall = project.registerTask<KotlinNpmInstallTask>(KotlinNpmInstallTask.NAME) { npmInstall ->
|
||||
npmInstall.dependsOn(setupTask)
|
||||
npmInstall.dependsOn(setupFileHasherTask)
|
||||
npmInstall.group = TASKS_GROUP_NAME
|
||||
npmInstall.description = "Find, download and link NPM dependencies and projects"
|
||||
|
||||
it.onlyIfCompat("No package.json files for install") { task ->
|
||||
npmInstall.onlyIfCompat("No package.json files for install") { task ->
|
||||
task as KotlinNpmInstallTask
|
||||
task.preparedFiles.all { file ->
|
||||
file.exists()
|
||||
}
|
||||
}
|
||||
|
||||
it.doNotTrackStateCompat("NPM package manager track by its own")
|
||||
npmInstall.outputs.upToDateWhen {
|
||||
npmInstall.nodeModules.exists()
|
||||
}
|
||||
}
|
||||
|
||||
project.registerTask<Task>(PACKAGE_JSON_UMBRELLA_TASK_NAME)
|
||||
|
||||
+2
@@ -75,6 +75,8 @@ internal class GradleNodeModuleBuilder(
|
||||
packageJson.main = "${name}.js"
|
||||
}
|
||||
|
||||
packageJson.devDependencies.clear()
|
||||
|
||||
// yarn requires semver
|
||||
packageJson.version = fixSemver(packageJson.version)
|
||||
|
||||
|
||||
+22
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.KotlinNpmResolutionManager
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.UsesKotlinNpmResolutionManager
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.asNpmEnvironment
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.asYarnEnvironment
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinRootNpmResolver
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.yarn
|
||||
import java.io.File
|
||||
|
||||
@@ -33,6 +34,9 @@ abstract class KotlinNpmInstallTask :
|
||||
private val yarn
|
||||
get() = project.rootProject.yarn
|
||||
|
||||
private val rootResolver: KotlinRootNpmResolver
|
||||
get() = nodeJs.resolver
|
||||
|
||||
// -----
|
||||
|
||||
private val npmEnvironment by lazy {
|
||||
@@ -54,11 +58,29 @@ abstract class KotlinNpmInstallTask :
|
||||
nodeJs.packageManager.preparedFiles(npmEnvironment)
|
||||
}
|
||||
|
||||
@get:PathSensitive(PathSensitivity.RELATIVE)
|
||||
@get:IgnoreEmptyDirectories
|
||||
@get:NormalizeLineEndings
|
||||
@get:InputFiles
|
||||
val packageJsonFiles: Collection<File> by lazy {
|
||||
rootResolver.projectResolvers.values
|
||||
.flatMap { it.compilationResolvers }
|
||||
.map { it.compilationNpmResolution }
|
||||
.map { it.npmProjectPackageJsonFile }
|
||||
}
|
||||
|
||||
@get:OutputFile
|
||||
val yarnLock: File by lazy {
|
||||
nodeJs.rootPackageDir.resolve("yarn.lock")
|
||||
}
|
||||
|
||||
// node_modules as OutputDirectory is performance problematic
|
||||
// so input will only be existence of its directory
|
||||
@get:Internal
|
||||
val nodeModules: File by lazy {
|
||||
nodeJs.rootPackageDir.resolve("node_modules")
|
||||
}
|
||||
|
||||
@TaskAction
|
||||
fun resolve() {
|
||||
npmResolutionManager.get()
|
||||
|
||||
Reference in New Issue
Block a user