我考虑过以下选项:
使用gulp-shell
:该插件已被弃用且错误
使用gulp-exec
:似乎与我没用的gulp-stream绑在一起。我不确定如何使用它来运行单个任务,作者甚至声称,你不应该只使用它来运行一个任务。
使用child_process.exec
虽然这是gulp-exec
的作者推荐的,但解决方案看起来很糟糕有两个原因:a)stdout和stderr不会逐步打印到控制台,只能作为缓冲区/字符串访问在子进程结束后。 b)如果进程产生太多控制台输出,则超出缓冲区限制并且exec崩溃。这意味着,除非您100%确定,您的流程可以产生多少输出,否则您不应该使用它。
使用child_process.spawn
虽然有点冗长,但这是我迄今为止发现的最好的:
gulp.task('list', (cb) => {
childProcess.spawn('find', ['/'], { stdio: 'inherit' }).on('close', cb);
});