"添加前端模板和运行代码模块"
This commit is contained in:
62
qiming-vite-plugin-design-mode/scripts/release-preflight.sh
Normal file
62
qiming-vite-plugin-design-mode/scripts/release-preflight.sh
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# 这个脚本用于发布前的硬性校验。
|
||||
# 设计目标:尽量在真正 npm publish 之前发现问题,避免发布一半才失败。
|
||||
#
|
||||
# 校验项:
|
||||
# 1) 当前 npm registry 必须是 npmjs 官方源(防止发到镜像源)
|
||||
# 2) 根包与 4 个发布包版本号必须完全一致(统一版本策略)
|
||||
# 3) 发布包 package.json 中禁止出现 workspace:*(外部安装无法解析)
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
echo "[preflight] checking npm registry..."
|
||||
REGISTRY="$(npm config get registry)"
|
||||
if [[ "$REGISTRY" != "https://registry.npmjs.org/" ]]; then
|
||||
echo "[preflight] error: registry is '$REGISTRY', expected 'https://registry.npmjs.org/'"
|
||||
echo "[preflight] hint: run 'nrm use npm' first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[preflight] checking version consistency..."
|
||||
node <<'NODE'
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const root = process.cwd();
|
||||
const packageFiles = [
|
||||
"package.json",
|
||||
"packages/client-shared/package.json",
|
||||
"packages/client-react/package.json",
|
||||
"packages/client-vue/package.json",
|
||||
"packages/plugin/package.json",
|
||||
];
|
||||
|
||||
const versions = packageFiles.map((file) => {
|
||||
const pkg = JSON.parse(fs.readFileSync(path.join(root, file), "utf8"));
|
||||
return { file, version: pkg.version };
|
||||
});
|
||||
|
||||
const uniqueVersions = [...new Set(versions.map((item) => item.version))];
|
||||
if (uniqueVersions.length !== 1) {
|
||||
console.error("[preflight] error: versions are not aligned:");
|
||||
for (const item of versions) {
|
||||
console.error(` - ${item.file}: ${item.version}`);
|
||||
}
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(`[preflight] version aligned: ${uniqueVersions[0]}`);
|
||||
NODE
|
||||
|
||||
echo "[preflight] checking workspace protocol leakage..."
|
||||
if rg "workspace:\\*" packages/*/package.json >/dev/null; then
|
||||
echo "[preflight] error: found 'workspace:*' in publishable package dependencies."
|
||||
echo "[preflight] hint: replace with explicit semver before publish."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[preflight] all checks passed."
|
||||
Reference in New Issue
Block a user