






















@@ -885,6 +885,17 @@ function resolveRuntimeDepsStampPath(repoRoot, pluginId) {
885885}
886886887887function createRuntimeDepsFingerprint(packageJson, pruneConfig, params = {}) {
888+return createHash("sha256")
889+.update(
890+JSON.stringify({
891+cheapFingerprint: createRuntimeDepsCheapFingerprint(packageJson, pruneConfig, params),
892+rootInstalledRuntimeFingerprint: params.rootInstalledRuntimeFingerprint ?? null,
893+}),
894+)
895+.digest("hex");
896+}
897+898+function createRuntimeDepsCheapFingerprint(packageJson, pruneConfig, params = {}) {
888899const repoRoot = params.repoRoot;
889900const lockfilePath =
890901typeof repoRoot === "string" && repoRoot.length > 0
@@ -901,7 +912,6 @@ function createRuntimeDepsFingerprint(packageJson, pruneConfig, params = {}) {
901912globalPruneSuffixes: pruneConfig.globalPruneSuffixes,
902913 packageJson,
903914pruneRules: [...pruneConfig.pruneRules.entries()],
904-rootInstalledRuntimeFingerprint: params.rootInstalledRuntimeFingerprint ?? null,
905915 rootLockfile,
906916version: runtimeDepsStagingVersion,
907917}),
@@ -949,6 +959,7 @@ function removeStaleRuntimeDepsTempDirs(pluginDir) {
949959function stageInstalledRootRuntimeDeps(params) {
950960const {
951961 directDependencyPackageRoot = null,
962+ cheapFingerprint,
952963 fingerprint,
953964 packageJson,
954965 pluginDir,
@@ -990,6 +1001,7 @@ function stageInstalledRootRuntimeDeps(params) {
9901001assertPathIsNotSymlink(nodeModulesDir, "remove runtime deps");
9911002removePathIfExists(nodeModulesDir);
9921003writeJsonAtomically(stampPath, {
1004+ cheapFingerprint,
9931005 fingerprint,
9941006generatedAt: new Date().toISOString(),
9951007});
@@ -1029,6 +1041,7 @@ function stageInstalledRootRuntimeDeps(params) {
1029104110301042replaceDirAtomically(nodeModulesDir, stagedNodeModulesDir);
10311043writeJsonAtomically(stampPath, {
1044+ cheapFingerprint,
10321045 fingerprint,
10331046generatedAt: new Date().toISOString(),
10341047});
@@ -1078,6 +1091,7 @@ function createRootRuntimeStagingError(params) {
10781091function installPluginRuntimeDeps(params) {
10791092const {
10801093 directDependencyPackageRoot = null,
1094+ cheapFingerprint,
10811095 fingerprint,
10821096 packageJson,
10831097 pluginDir,
@@ -1120,6 +1134,7 @@ function installPluginRuntimeDeps(params) {
11201134removePathIfExists(nodeModulesDir);
11211135}
11221136writeJsonAtomically(stampPath, {
1137+ cheapFingerprint,
11231138 fingerprint,
11241139generatedAt: new Date().toISOString(),
11251140});
@@ -1151,6 +1166,10 @@ export function stageBundledPluginRuntimeDeps(params = {}) {
11511166removePathIfExists(stampPath);
11521167continue;
11531168}
1169+const cheapFingerprint = createRuntimeDepsCheapFingerprint(packageJson, pruneConfig, {
1170+ repoRoot,
1171+});
1172+const stamp = readRuntimeDepsStamp(stampPath);
11541173const rootInstalledRuntimeFingerprint = resolveInstalledRuntimeClosureFingerprint({
11551174 directDependencyPackageRoot,
11561175 packageJson,
@@ -1160,14 +1179,14 @@ export function stageBundledPluginRuntimeDeps(params = {}) {
11601179 repoRoot,
11611180 rootInstalledRuntimeFingerprint,
11621181});
1163-const stamp = readRuntimeDepsStamp(stampPath);
11641182if (fs.existsSync(nodeModulesDir) && stamp?.fingerprint === fingerprint) {
11651183continue;
11661184}
11671185if (
11681186stageInstalledRootRuntimeDeps({
11691187 directDependencyPackageRoot,
11701188 fingerprint,
1189+ cheapFingerprint,
11711190 packageJson,
11721191 pluginDir,
11731192 pruneConfig,
@@ -1184,6 +1203,7 @@ export function stageBundledPluginRuntimeDeps(params = {}) {
11841203installParams: {
11851204 directDependencyPackageRoot,
11861205 fingerprint,
1206+ cheapFingerprint,
11871207 packageJson,
11881208 pluginDir,
11891209 pluginId,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。