如何在gulp中运行bash命令?

hou*_*uhr 49 bash gulp

我想在gulp.watch函数末尾添加一些bash命令来加快我的开发速度.所以,我想知道是否有可能.谢谢!

Man*_*utz 76

我会选择:

var spawn = require('child_process').spawn;
var fancyLog = require('fancy-log');
var beeper = require('beeper');

gulp.task('default', function(){

    gulp.watch('*.js', function(e) {
        // Do run some gulp tasks here
        // ...

        // Finally execute your script below - here "ls -lA"
        var child = spawn("ls", ["-lA"], {cwd: process.cwd()}),
            stdout = '',
            stderr = '';

        child.stdout.setEncoding('utf8');

        child.stdout.on('data', function (data) {
            stdout += data;
            fancyLog(data);
        });

        child.stderr.setEncoding('utf8');
        child.stderr.on('data', function (data) {
            stderr += data;
            fancyLog.error(data));
            beeper();
        });

        child.on('close', function(code) {
            fancyLog("Done with exit code", code);
            fancyLog("You access complete stdout and stderr from here"); // stdout, stderr
        });


    });
});
Run Code Online (Sandbox Code Playgroud)

这里没有什么真正的"吞吐" - 主要是使用子进程http://nodejs.org/api/child_process.html并将结果欺骗成花式日志

  • 感谢您实际解决他的问题而不是回复插件的链接. (26认同)
  • 虽然我可以理解您可能不想使用插件,但我相信我的答案仍然可以解决这个问题. (7认同)
  • 在对子进程进行一些研究之后,我终于通过使用`child_process.exec`实现了我的目标.感谢您的节点资源! (3认同)

Eri*_*rik 44

使用https://www.npmjs.org/package/gulp-shell.

一个方便的gulp命令行界面

  • gulp-shell被列入黑名单,请参阅https://github.com/gulpjs/plugins/blob/master/src/blackList.json. (14认同)
  • 虽然有其他方法(如gulp-exec和gulp-spawn),但gulp-shell会立即打印命令的输出 - 这通常是需要的. (6认同)
  • 现在还有[`gulp-run`](https://www.npmjs.com/package/gulp-run),它有一个更清晰,更直观的界面,IMO. (4认同)
  • 一个不需要任何插件来从gulp运行bash命令.只需直接使用node的`child_process`即可.这就是为什么这些插件被列入黑名单的原因. (4认同)
  • 它被"列入黑名单",因为与`gulp-exec`有一些重叠 - 并不是说​​这两个插件都有任何问题.https://github.com/sun-zheng-an/gulp-shell/issues/1 (2认同)