mirror of
https://github.com/whyour/qinglong.git
synced 2026-11-02 06:58:52 +08:00
21 lines
1.1 KiB
JavaScript
21 lines
1.1 KiB
JavaScript
// npm-packlist always excludes the root pnpm lockfile, even with a files entry.
|
|
// Carry a checked copy under a runtime filename and restore it after installation.
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
const { execFileSync } = require('node:child_process');
|
|
const root = path.resolve(__dirname, '..');
|
|
const copy = path.join(root, 'shell/upgrade-lock.yaml');
|
|
if (process.argv.includes('--clean')) {
|
|
fs.rmSync(copy, { force: true });
|
|
} else {
|
|
if (execFileSync('git', ['-C', root, 'status', '--porcelain', '--untracked-files=all'], { encoding: 'utf8' }).trim())
|
|
throw new Error('Pack only from a clean source checkout');
|
|
// The native npm pack/publish hooks must enforce the same checks as CI:
|
|
// current commit, clean build, lockfile and every output file's checksum.
|
|
// Capture stdout so npm pack --json remains machine-readable.
|
|
execFileSync(process.execPath, [path.join(root, 'docker/verify-build.cjs')], { cwd: root });
|
|
const bytes = fs.readFileSync(path.join(root, 'pnpm-lock.yaml'));
|
|
fs.rmSync(copy, { force: true });
|
|
fs.writeFileSync(copy, bytes, { flag: 'wx', mode: 0o644 });
|
|
}
|