execSync - 如何查看正在进行的脚本执行
execSync - How to see ongoing script execution
我正在使用 execSync
在 javascript 脚本中执行 shell 脚本
const { execSync } = require('child_process');
const shell = (cmd) => execSync(cmd, { encoding: 'utf8' });
shell('node jest');
当我从我的终端 运行 jest
时,我在控制台中看到脚本正在进行的每个步骤。
当我 运行 shell(script)
时,我只在脚本末尾看到整个结果。
问题
我应该如何使用 execSync
实时输出脚本的执行?
经过一番研究,我找到了正确的方法。
child_process.exec() is "synchronously asynchronous", meaning although the .exec is asynchronous, it waits for the child process to end and tries to return all the buffered data at once
child_process.spawn() returns an object with stdout and stderr stream
因此我选择使用 spawn
并创建了
const shellAsync = (cmd) => {
const script = spawn(cmd);
script.stdout.on('data', (data) => {
console.log(`${data}`);
});
script.stderr.on('data', (data) => {
console.error(`${data}`);
});
script.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
};
我正在使用 execSync
在 javascript 脚本中执行 shell 脚本
const { execSync } = require('child_process');
const shell = (cmd) => execSync(cmd, { encoding: 'utf8' });
shell('node jest');
当我从我的终端 运行 jest
时,我在控制台中看到脚本正在进行的每个步骤。
当我 运行 shell(script)
时,我只在脚本末尾看到整个结果。
问题
我应该如何使用 execSync
实时输出脚本的执行?
经过一番研究,我找到了正确的方法。
child_process.exec() is "synchronously asynchronous", meaning although the .exec is asynchronous, it waits for the child process to end and tries to return all the buffered data at once
child_process.spawn() returns an object with stdout and stderr stream
因此我选择使用 spawn
并创建了
const shellAsync = (cmd) => {
const script = spawn(cmd);
script.stdout.on('data', (data) => {
console.log(`${data}`);
});
script.stderr.on('data', (data) => {
console.error(`${data}`);
});
script.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
};