chore: pin npm deps, quiet install, validate exact versions

Made-with: Cursor
This commit is contained in:
time_
2026-03-29 13:40:37 +03:00
parent f6cdeec918
commit 8f7b7ea39f
11 changed files with 177 additions and 100 deletions

View File

@@ -181,6 +181,26 @@ function validateBuildChecks() {
assertCondition(Boolean(clientPackage.devDependencies?.vite), 'client/package.json must keep Vite as a dev dependency');
assertCondition(Boolean(clientPackage.devDependencies?.['@vitejs/plugin-react']), 'client/package.json must keep @vitejs/plugin-react as a dev dependency');
}
validatePinnedPackageJsonVersions();
}
function validatePinnedPackageJsonVersions() {
for (const rel of ['server/package.json', 'client/package.json']) {
const pkg = parseJson(rel);
if (!pkg) continue;
for (const section of ['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies']) {
const deps = pkg[section];
if (!deps || typeof deps !== 'object') continue;
for (const [name, ver] of Object.entries(deps)) {
if (typeof ver !== 'string') continue;
assertCondition(
!/^[\^~]/.test(ver),
`${rel} ${section}.${name} must be pinned (no ^ or ~): got ${ver}`,
);
}
}
}
}
function validateAuthChecks() {