build(vue.config): 修复生产构建门禁的node执行路径问题
将执行test-gate的命令从硬编码的"node"改为使用process.execPath,避免依赖PATH环境变量查找node二进制,解决HBuilderX等IDE下PATH无node条目导致的构建失败问题,同时打印当前使用的node版本
This commit is contained in:
@@ -21,12 +21,18 @@ function _isProductionRelease() {
|
|||||||
* 生产构建门禁: 同步执行 test-gate.js, 失败立即终止构建 (零产物)。
|
* 生产构建门禁: 同步执行 test-gate.js, 失败立即终止构建 (零产物)。
|
||||||
* 与 package.json 的 "prebuild": "npm run test" 互补 —— 那条只覆盖 npm run build,
|
* 与 package.json 的 "prebuild": "npm run test" 互补 —— 那条只覆盖 npm run build,
|
||||||
* 本函数覆盖所有会 require vue.config.js 的入口 (HBuilderX / vue-cli-service / uni-cli)。
|
* 本函数覆盖所有会 require vue.config.js 的入口 (HBuilderX / vue-cli-service / uni-cli)。
|
||||||
|
*
|
||||||
|
* 关键: 使用 process.execPath 而非字符串 "node",避免依赖 PATH 查找 node。
|
||||||
|
* 原因: HBuilderX 等 IDE 启动子进程时,PATH 中可能根本没有 node 条目 (本项目
|
||||||
|
* 就曾因 Machine PATH 残留指向 v14.21.3 的 Huawei node 而触发问题)。
|
||||||
|
* process.execPath 始终是"当前正在运行 vue.config.js 的那个 node 二进制",
|
||||||
|
* HBuilderX 自带 node (v22.22.2) ≥ 18,天然满足 test-gate 的版本要求。
|
||||||
*/
|
*/
|
||||||
function _enforceTestGate() {
|
function _enforceTestGate() {
|
||||||
if (!_isProductionRelease()) return; // 开发态 / 运行态不拦截
|
if (!_isProductionRelease()) return; // 开发态 / 运行态不拦截
|
||||||
console.log('\n🛡️ [test-gate] 检测到生产构建,先执行测试门禁...');
|
console.log(`\n🛡️ [test-gate] 检测到生产构建,先执行测试门禁 (${process.versions.node})...`);
|
||||||
try {
|
try {
|
||||||
execSync('node scripts/test-gate.js', {
|
execSync(`"${process.execPath}" scripts/test-gate.js`, {
|
||||||
cwd: __dirname,
|
cwd: __dirname,
|
||||||
stdio: 'inherit',
|
stdio: 'inherit',
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user