[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)
|
it.gradleNodeModules.set(gradleNodeModulesProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
val npmInstall = project.registerTask<KotlinNpmInstallTask>(KotlinNpmInstallTask.NAME) {
|
val npmInstall = project.registerTask<KotlinNpmInstallTask>(KotlinNpmInstallTask.NAME) { npmInstall ->
|
||||||
it.dependsOn(setupTask)
|
npmInstall.dependsOn(setupTask)
|
||||||
it.dependsOn(setupFileHasherTask)
|
npmInstall.dependsOn(setupFileHasherTask)
|
||||||
it.group = TASKS_GROUP_NAME
|
npmInstall.group = TASKS_GROUP_NAME
|
||||||
it.description = "Find, download and link NPM dependencies and projects"
|
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 as KotlinNpmInstallTask
|
||||||
task.preparedFiles.all { file ->
|
task.preparedFiles.all { file ->
|
||||||
file.exists()
|
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)
|
project.registerTask<Task>(PACKAGE_JSON_UMBRELLA_TASK_NAME)
|
||||||
|
|||||||
+2
@@ -75,6 +75,8 @@ internal class GradleNodeModuleBuilder(
|
|||||||
packageJson.main = "${name}.js"
|
packageJson.main = "${name}.js"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
packageJson.devDependencies.clear()
|
||||||
|
|
||||||
// yarn requires semver
|
// yarn requires semver
|
||||||
packageJson.version = fixSemver(packageJson.version)
|
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.UsesKotlinNpmResolutionManager
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.asNpmEnvironment
|
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.asYarnEnvironment
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinRootNpmResolver
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.yarn
|
import org.jetbrains.kotlin.gradle.targets.js.yarn.yarn
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -33,6 +34,9 @@ abstract class KotlinNpmInstallTask :
|
|||||||
private val yarn
|
private val yarn
|
||||||
get() = project.rootProject.yarn
|
get() = project.rootProject.yarn
|
||||||
|
|
||||||
|
private val rootResolver: KotlinRootNpmResolver
|
||||||
|
get() = nodeJs.resolver
|
||||||
|
|
||||||
// -----
|
// -----
|
||||||
|
|
||||||
private val npmEnvironment by lazy {
|
private val npmEnvironment by lazy {
|
||||||
@@ -54,11 +58,29 @@ abstract class KotlinNpmInstallTask :
|
|||||||
nodeJs.packageManager.preparedFiles(npmEnvironment)
|
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
|
@get:OutputFile
|
||||||
val yarnLock: File by lazy {
|
val yarnLock: File by lazy {
|
||||||
nodeJs.rootPackageDir.resolve("yarn.lock")
|
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
|
@TaskAction
|
||||||
fun resolve() {
|
fun resolve() {
|
||||||
npmResolutionManager.get()
|
npmResolutionManager.get()
|
||||||
|
|||||||
Reference in New Issue
Block a user