From 60e685391652b2c8f443bf38af152b616e8afd9f Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Wed, 25 Jun 2025 12:54:28 +0200 Subject: [PATCH 1/8] Make npm restore incremental --- eng/Npm.Workspace.nodeproj | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/eng/Npm.Workspace.nodeproj b/eng/Npm.Workspace.nodeproj index 2c22c0dc8265..5d4de5ee4586 100644 --- a/eng/Npm.Workspace.nodeproj +++ b/eng/Npm.Workspace.nodeproj @@ -19,11 +19,29 @@ <_NpmAdditionalEnvironmentVariables>PUPPETEER_SKIP_DOWNLOAD=1 - + + $(MSBuildThisFileDirectory).. + $(NpmWorkspaceRoot)\node_modules\.package-lock.json + + + + + + + + + + + + + + + + From 26ecb5bb2417d69d07971d31f5f5bbb646e7cea9 Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Wed, 25 Jun 2025 13:02:54 +0200 Subject: [PATCH 2/8] Exclude package.json files from inside node_modules as inputs --- eng/Npm.Workspace.nodeproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Npm.Workspace.nodeproj b/eng/Npm.Workspace.nodeproj index 5d4de5ee4586..de870bd7c719 100644 --- a/eng/Npm.Workspace.nodeproj +++ b/eng/Npm.Workspace.nodeproj @@ -28,7 +28,7 @@ - + From 7e92ba418a481c859783c975b7d17cc89dab4cdb Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Wed, 25 Jun 2025 14:05:20 +0200 Subject: [PATCH 3/8] Avoid modifying dependencies during build if already correct --- eng/Npm.Workspace.nodeproj | 2 +- eng/scripts/npm/update-dependency-versions.mjs | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/eng/Npm.Workspace.nodeproj b/eng/Npm.Workspace.nodeproj index de870bd7c719..26daee43f562 100644 --- a/eng/Npm.Workspace.nodeproj +++ b/eng/Npm.Workspace.nodeproj @@ -45,7 +45,7 @@ EnvironmentVariables="$(_NpmAdditionalEnvironmentVariables)" /> - + $(VersionPrefix) $(VersionPrefix)-$(VersionSuffix) diff --git a/eng/scripts/npm/update-dependency-versions.mjs b/eng/scripts/npm/update-dependency-versions.mjs index 9311284a3999..c5c615851dea 100644 --- a/eng/scripts/npm/update-dependency-versions.mjs +++ b/eng/scripts/npm/update-dependency-versions.mjs @@ -45,6 +45,13 @@ function applyPackageVersion(packagesToPack, defaultPackageVersion) { const packageName = packageJson.name; const packageVersion = defaultPackageVersion; const packageDir = path.dirname(packagePath); + + // Check if the version is already correct + if (packageJson.version === packageVersion) { + console.log(`Skipping ${packageName} - version ${packageVersion} already applied.`); + continue; + } + // Run npm version packageVersion --no-git-tag-version // This will update the package.json version to the specified version without creating a git tag // Make a backup of the package.json From d72b54b24ba3fc34f5e77230cf6900a50ea49c29 Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Wed, 25 Jun 2025 15:34:14 +0200 Subject: [PATCH 4/8] More incremental fixes --- eng/scripts/npm/update-dependency-versions.mjs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/eng/scripts/npm/update-dependency-versions.mjs b/eng/scripts/npm/update-dependency-versions.mjs index c5c615851dea..d4e2ebea88bf 100644 --- a/eng/scripts/npm/update-dependency-versions.mjs +++ b/eng/scripts/npm/update-dependency-versions.mjs @@ -97,11 +97,16 @@ function updateDependencyVersions(packagesToPack) { // Find the dependency in packagesToPack, load the package.json and update the dependency version const dependencyPackage = seenPackagesAndVersions.find(([_, packageJson]) => packageJson.name === dependency); if (dependencyPackage) { - modified = true; const dependencyPackagePath = dependencyPackage[0]; const dependencyPackageJson = JSON.parse(fs.readFileSync(dependencyPackagePath, 'utf-8')); - dependencies[dependency] = `>=${dependencyPackageJson.version}`; - console.log(`Updated dependency ${dependency} to ${dependencyPackageJson.version} in ${packageJson.name}.`); + const newDependencyVersion = `>=${dependencyPackageJson.version}`; + + // Only update if the dependency version is actually different + if (dependencies[dependency] !== newDependencyVersion) { + modified = true; + dependencies[dependency] = newDependencyVersion; + console.log(`Updated dependency ${dependency} to ${dependencyPackageJson.version} in ${packageJson.name}.`); + } } } if (modified) { From 221fb2dbb40054eff6e190a5ec545ddce2821f1d Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Wed, 25 Jun 2025 16:52:10 +0200 Subject: [PATCH 5/8] Build incrementality --- eng/Npm.Workspace.nodeproj | 41 +++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/eng/Npm.Workspace.nodeproj b/eng/Npm.Workspace.nodeproj index 26daee43f562..ae42467f2abb 100644 --- a/eng/Npm.Workspace.nodeproj +++ b/eng/Npm.Workspace.nodeproj @@ -24,7 +24,7 @@ $(NpmWorkspaceRoot)\node_modules\.package-lock.json - + @@ -32,11 +32,46 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + $(VersionPrefix) $(VersionPrefix)-$(VersionSuffix) From 01e4d2912da6787039c0ada1e6f56352d7c2a2fd Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Wed, 25 Jun 2025 16:57:02 +0200 Subject: [PATCH 6/8] Common properties --- eng/Npm.Workspace.nodeproj | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/eng/Npm.Workspace.nodeproj b/eng/Npm.Workspace.nodeproj index ae42467f2abb..eb4966bd03d6 100644 --- a/eng/Npm.Workspace.nodeproj +++ b/eng/Npm.Workspace.nodeproj @@ -22,6 +22,13 @@ $(MSBuildThisFileDirectory).. $(NpmWorkspaceRoot)\node_modules\.package-lock.json + + + **\pkg-version.ts; + $(NpmWorkspaceRoot)\src\**\node_modules\**\*; + $(NpmWorkspaceRoot)\src\**\bin\**\*; + $(NpmWorkspaceRoot)\src\**\obj\**\* + @@ -55,16 +62,16 @@ - - - + + + - - - - - + + + + + From cf1e423e14f8e96eea21cc037694aaa6afb6a3fc Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Wed, 25 Jun 2025 18:57:18 +0200 Subject: [PATCH 7/8] Add a specific file list for all projects --- eng/Npm.Workspace.nodeproj | 74 +++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 9 deletions(-) diff --git a/eng/Npm.Workspace.nodeproj b/eng/Npm.Workspace.nodeproj index eb4966bd03d6..9f69a38f625a 100644 --- a/eng/Npm.Workspace.nodeproj +++ b/eng/Npm.Workspace.nodeproj @@ -46,17 +46,73 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + From 822fc7393c6e268e0a49a1cd2ddfeb845b35120c Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Fri, 27 Jun 2025 14:28:44 +0200 Subject: [PATCH 8/8] Fix local validation build --- eng/Npm.Workspace.nodeproj | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/eng/Npm.Workspace.nodeproj b/eng/Npm.Workspace.nodeproj index 9f69a38f625a..d28b99c7af83 100644 --- a/eng/Npm.Workspace.nodeproj +++ b/eng/Npm.Workspace.nodeproj @@ -167,7 +167,7 @@ - + $(VersionPrefix) $(VersionPrefix)-$(VersionSuffix) @@ -176,6 +176,10 @@ + +