
























@@ -40,6 +40,7 @@ const entrySet = new Set(normalized);
4040const errors = [];
4141const warnings = [];
4242const LEGACY_PACKAGE_ACCEPTANCE_COMPAT_MAX = { year: 2026, month: 4, day: 25 };
43+const LEGACY_LOCAL_BUILD_METADATA_COMPAT_MAX = { year: 2026, month: 4, day: 26 };
4344const FORBIDDEN_LOCAL_BUILD_METADATA_FILES = new Set(LOCAL_BUILD_METADATA_DIST_PATHS);
44454546const LEGACY_OMITTED_PRIVATE_QA_INVENTORY_PREFIXES = [
@@ -97,6 +98,11 @@ function isLegacyPackageAcceptanceCompatVersion(version) {
9798return parsed ? compareCalver(parsed, LEGACY_PACKAGE_ACCEPTANCE_COMPAT_MAX) <= 0 : false;
9899}
99100101+function isLegacyLocalBuildMetadataCompatVersion(version) {
102+const parsed = parseCalver(version);
103+return parsed ? compareCalver(parsed, LEGACY_LOCAL_BUILD_METADATA_COMPAT_MAX) <= 0 : false;
104+}
105+100106function readTarEntry(entryPath) {
101107const candidates = [entryPath, `package/${entryPath}`];
102108for (const candidate of candidates) {
@@ -123,8 +129,21 @@ if (!entrySet.has("package.json")) {
123129if (!normalized.some((entry) => entry.startsWith("dist/"))) {
124130errors.push("missing dist/ entries");
125131}
132+let packageVersion = "";
133+if (entrySet.has("package.json")) {
134+try {
135+const packageJson = JSON.parse(readTarEntry("package.json"));
136+packageVersion = typeof packageJson.version === "string" ? packageJson.version : "";
137+} catch {
138+packageVersion = "";
139+}
140+}
126141for (const forbiddenEntry of FORBIDDEN_LOCAL_BUILD_METADATA_FILES) {
127142if (entrySet.has(forbiddenEntry)) {
143+if (isLegacyLocalBuildMetadataCompatVersion(packageVersion)) {
144+warnings.push(`legacy package includes local build metadata tar entry ${forbiddenEntry}`);
145+continue;
146+}
128147errors.push(`forbidden local build metadata tar entry ${forbiddenEntry}`);
129148}
130149}
@@ -133,8 +152,6 @@ if (!entrySet.has("dist/postinstall-inventory.json")) {
133152}
134153if (entrySet.has("dist/postinstall-inventory.json")) {
135154try {
136-const packageJson = JSON.parse(readTarEntry("package.json"));
137-const packageVersion = typeof packageJson.version === "string" ? packageJson.version : "";
138155const allowLegacyPrivateQaInventoryOmissions =
139156isLegacyPackageAcceptanceCompatVersion(packageVersion);
140157const inventory = JSON.parse(readTarEntry("dist/postinstall-inventory.json"));
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。