Lilp
Lilp

Reputation: 971

Gulp Child Process hangs

I am trying to create a gulp task that updates all the assets in my project by executing a shell script. The problem is that it executes as expected and then just hangs.

'use-strict';

var gulp  = require('gulp'),
    gutil = require('gulp-util');
    exec    = require('child_process').exec;
var foreach = require('gulp-foreach');

gulp.task('update-assets', function () {
        exec('./update_assets.sh', {cwd: 'assets'}, function(err, stdout, stderr) {
        console.log(stdout);
        console.log(stderr);
        cb(err);
    });
});

gulp.task('default', ['update-assets'], function() {
    gulp.start('update-assets');
});

Upvotes: 0

Views: 185

Answers (1)

daniel.caspers
daniel.caspers

Reputation: 1756

This is because of the nature of exec(). What exec() does it allows the command you give it to "take over" the current process. What you can do is instead try something like child_process.spawn . If it is a daemon process.

Take a good look at the Child_Process documentation. I think that this should help you get a good start.

Other options that may be helpful include modifying the script to throw exit codes for Gulp to recognize, or using timeouts to know when a gulp task has terminated.

UPDATE: Alternatively, you could use this, which is what I found worked for me when running a web server. shell.exec('./update_assets.sh', {async:true} );

Upvotes: 1

Related Questions