Node.js 我想在后台运行npm安装和grunt
所以我在节点中有代码,我想在后台运行npm安装和grunt。npm安装应在grunt运行之前运行。两者都应该异步地运行在系统中。如何使用node完成此操作?从node中取出命令,它将如下所示:Node.js 我想在后台运行npm安装和grunt,node.js,Node.js,所以我在节点中有代码,我想在后台运行npm安装和grunt。npm安装应在grunt运行之前运行。两者都应该异步地运行在系统中。如何使用node完成此操作?从node中取出命令,它将如下所示: const exec = require('child_process').exec; exec('npm install && grunt', (err, stdout, stderr) => { if (err) { console.error(err); r
const exec = require('child_process').exec;
exec('npm install && grunt', (err, stdout, stderr) => {
if (err) {
console.error(err);
return;
}
console.log(stdout);
});
如果您想按描述运行这两个程序,那么在后台从shell运行
npm install && grunt &
要将输出写入文件,可以执行以下操作
const exec = require('child_process').exec;
exec('npm install && grunt', (err, stdout, stderr) => {
fs.writeFile('outputOfNpmInstallPlusGrunt.txt', stdout, () => { ... })
}
相反,使用spawn时,它看起来像:
const spawn = require('child_process').spawn;
function makeRunner(name, cb) {
var ls = spawn(name, []);
var output = '';
ls.stdout.on('data', (data) => { output += data; });
ls.on('close', (code) => {
fs.writeFile(name.split(' ').join('-'), output, cb);
});
}
makeRunner('npm install', () => makeRunner('grunt'));
这与使用spawn有什么区别?spawn会返回一个流,让您从派生的进程中侦听标准输出,并在每个标准输出发生时对其进行操作,如果您只是想直接运行它并在以后获得输出,那么这个exec就更简单了。您不需要运行
(npm安装和&grunt)&
如果要在后台同时运行这两个选项npm install&&grunt&
将在前台运行npm install
,然后在后台运行grunt。因此我想使用spawn,以便将输出写入文件。我如何使用spawn顺序运行这两个命令?@PaulHicks你是对的,我只是假设OP希望在尝试使用grunt之前完成npm的安装。