diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt index d695be9b0f5..ada930b131e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt @@ -58,6 +58,9 @@ open class NodeJsRootExtension(val rootProject: Project) { val rootPackageDir: File get() = rootProject.buildDir.resolve("js") + internal val rootNodeModulesStateFile: File + get() = rootPackageDir.resolve("node_modules.state") + val projectPackagesDir: File get() = rootPackageDir.resolve("packages") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt index ebcd81ea991..62d3481d77f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt @@ -98,6 +98,8 @@ internal class KotlinRootNpmResolver internal constructor( } } + nodeJs.rootNodeModulesStateFile.writeText(System.currentTimeMillis().toString()) + upToDateChecks.forEach { it.commit() } return KotlinRootNpmResolution(rootProject, projectResolutions) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt index b234efdf457..9520aa8f4a8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinNpmInstallTask.kt @@ -26,6 +26,11 @@ open class KotlinNpmInstallTask : DefaultTask() { val packageJsonFiles: Collection get() = resolutionManager.packageJsonFiles + // avoid using node_modules as output directory, as it is significantly slows down build + @get:OutputFile + val nodeModulesState: File + get() = nodeJs.rootNodeModulesStateFile + @get:OutputFile val yarnLock: File get() = nodeJs.rootPackageDir.resolve("yarn.lock")