微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,59 @@
/**
* 修补 miniprogram-automator 的 spawn 调用
* 问题:在 Windows 上 spawn .bat 文件需要 shell: true
* miniprogram-automator v0.12.1 的 Launcher.js 中 spawn 缺少此选项
*
* 用法:在 weixin-devtools-mcp 启动前运行此补丁
* node scripts/ops/patch_automator_spawn.js
*/
const fs = require('fs');
const path = require('path');
// npx 缓存目录
const npxCacheBase = path.join(process.env.LOCALAPPDATA, 'npm-cache', '_npx');
// 遍历 npx 缓存找到 miniprogram-automator
const dirs = fs.readdirSync(npxCacheBase);
let patched = 0;
for (const dir of dirs) {
const launcherPath = path.join(npxCacheBase, dir, 'node_modules', 'miniprogram-automator', 'out', 'Launcher.js');
if (!fs.existsSync(launcherPath)) continue;
let content = fs.readFileSync(launcherPath, 'utf8');
// 检查是否已经 patch 过
if (content.includes('shell:!0') || content.includes('shell: true')) {
console.log(`[SKIP] ${dir} - 已经 patch 过`);
continue;
}
// 找到 spawn 调用并添加 shell: true
// 原始代码(混淆后): child_process_1.default.spawn(e,n,_)
// 其中 _ = {stdio:"ignore"} 或 _ = {stdio:"ignore",cwd:o}
// 需要在 _ 对象中添加 shell: true
// 方案:替换 spawn options 构造处
// 原始: const _={stdio:"ignore"};
// 替换: const _={stdio:"ignore",shell:true};
const original = 'const _={stdio:"ignore"};';
const replacement = 'const _={stdio:"ignore",shell:!0};';
if (content.includes(original)) {
content = content.replace(original, replacement);
fs.writeFileSync(launcherPath, content, 'utf8');
console.log(`[PATCHED] ${dir}/Launcher.js - 添加 shell:true`);
patched++;
} else {
console.log(`[WARN] ${dir} - 未找到预期的 spawn options 模式`);
// 尝试显示 spawn 附近的代码
const spawnIdx = content.indexOf('child_process_1.default.spawn');
if (spawnIdx > -1) {
const context = content.substring(Math.max(0, spawnIdx - 100), spawnIdx + 100);
console.log(` spawn 上下文: ...${context}...`);
}
}
}
console.log(`\n完成: ${patched} 个文件已 patch`);