How to run bash commands in gulp?

BashGulp

Bash Problem Overview


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!

Bash Solutions


Solution 1 - Bash

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

Solution 2 - Bash

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

> A handy command line interface for gulp

Solution 3 - Bash

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhouhrView Question on Stackoverflow
Solution 1 - BashMangled DeutzView Answer on Stackoverflow
Solution 2 - BashErikView Answer on Stackoverflow
Solution 3 - BashDavid LemonView Answer on Stackoverflow