微信小程序页面迁移校验之前 P5任务处理之前
This commit is contained in:
76
scripts/ops/enable_cli_auto.js
Normal file
76
scripts/ops/enable_cli_auto.js
Normal file
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* 启动微信开发者工具 CLI auto 命令
|
||||
* 自动回答 "y" 确认开启服务端口
|
||||
* 然后等待自动化端口启动
|
||||
*/
|
||||
const { spawn } = require('child_process');
|
||||
const net = require('net');
|
||||
|
||||
const CLI = 'C:\\DEV\\WechatDevtools\\cli.bat';
|
||||
const PROJECT = 'C:\\NeoZQYY\\apps\\miniprogram';
|
||||
const AUTO_PORT = 9420;
|
||||
|
||||
console.log('启动 CLI auto 命令...');
|
||||
console.log(`CLI: ${CLI}`);
|
||||
console.log(`项目: ${PROJECT}`);
|
||||
console.log(`自动化端口: ${AUTO_PORT}`);
|
||||
|
||||
const child = spawn(CLI, [
|
||||
'auto',
|
||||
'--project', PROJECT,
|
||||
'--auto-port', String(AUTO_PORT),
|
||||
], {
|
||||
shell: true,
|
||||
stdio: ['pipe', 'pipe', 'pipe'],
|
||||
});
|
||||
|
||||
let output = '';
|
||||
let answered = false;
|
||||
|
||||
child.stdout.on('data', (data) => {
|
||||
const text = data.toString();
|
||||
output += text;
|
||||
process.stdout.write(`[stdout] ${text}`);
|
||||
|
||||
// 检测到交互式提示,自动回答 y
|
||||
if (!answered && text.includes('Enable IDE Service')) {
|
||||
console.log('\n>>> 检测到服务端口确认提示,自动回答 y');
|
||||
child.stdin.write('y\n');
|
||||
answered = true;
|
||||
}
|
||||
});
|
||||
|
||||
child.stderr.on('data', (data) => {
|
||||
const text = data.toString();
|
||||
output += text;
|
||||
process.stderr.write(`[stderr] ${text}`);
|
||||
});
|
||||
|
||||
child.on('close', (code) => {
|
||||
console.log(`\nCLI 退出,代码: ${code}`);
|
||||
|
||||
// 检查端口
|
||||
setTimeout(async () => {
|
||||
const socket = new net.Socket();
|
||||
socket.setTimeout(3000);
|
||||
socket.on('connect', () => {
|
||||
socket.destroy();
|
||||
console.log(`✅ 端口 ${AUTO_PORT} 已开放!自动化启动成功`);
|
||||
process.exit(0);
|
||||
});
|
||||
socket.on('error', () => {
|
||||
socket.destroy();
|
||||
console.log(`❌ 端口 ${AUTO_PORT} 未开放`);
|
||||
console.log('完整输出:', output);
|
||||
process.exit(1);
|
||||
});
|
||||
socket.connect(AUTO_PORT, '127.0.0.1');
|
||||
}, 2000);
|
||||
});
|
||||
|
||||
// 30 秒超时
|
||||
setTimeout(() => {
|
||||
console.error('30 秒超时');
|
||||
child.kill();
|
||||
process.exit(1);
|
||||
}, 30000);
|
||||
Reference in New Issue
Block a user