在 Node.js 中,如果你想要使用 child_process.spawn 方法在一个特定的目录中执行命令,可以使用 spawn 方法的 cwd(current working directory)选项。这个选项允许指定子进程应该在其上运行命令的目录。
以下是一个例子,展示了如何使用 spawn 在一个指定的目录中执行 yarn build 命令:
const { spawn } = require('child_process');
const path = require('path');
// 假设你已经有了要进入的目录路径
const projectDir = '/path/to/your/project'; // 替换为实际的项目目录
const domain = 'your-domain'; // 替换为实际的 domain 值
// 构建命令和参数
const cmd = 'yarn';
const args = ['build:' + domain]; // 添加其他参数如果需要
// 使用 spawn 执行命令,并指定 cwd 为项目目录
const child = spawn(cmd, args, {
cwd: projectDir // 设置工作目录为项目目录
});
// 监听 stdout 和 stderr 的数据事件
child.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
child.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
// 监听 close 事件以获取退出码
child.on('close', (code) => {
console.log(`子进程退出,退出码 ${code}`);
});
// 如果你想要捕获错误事件(例如,如果无法执行命令)
child.on('error', (error) => {
console.error(`执行命令时发生错误: ${error}`);
});