How to run bash commands in gulp?

后端 未结 3 1276
灰色年华
灰色年华 2020-12-23 12:41

I want to add some bash commands at the end of gulp.watch function to accelerate my development speed. So, I am wondering if it is possible. Thanks!

相关标签:
3条回答
  • 2020-12-23 13:07

    The simplest solution is as easy as:

    var child = require('child_process');
    var gulp   = require('gulp');
    
    gulp.task('launch-ls',function(done) {
       child.spawn('ls', [ '-la'], { stdio: 'inherit' });
    });
    

    It doesn't use node streams and gulp pipes but it will do the work.

    0 讨论(0)
  • 2020-12-23 13:08

    Use https://www.npmjs.org/package/gulp-shell.

    A handy command line interface for gulp

    0 讨论(0)
  • 2020-12-23 13:24

    I would go with:

    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
            });
    
    
        });
    });
    

    Nothing really "gulp" in here - mainly using child processes http://nodejs.org/api/child_process.html and spoofing the result into fancy-log

    0 讨论(0)
提交回复
热议问题