web-dev-qa-db-fra.com

Exécuter une commande Shell de gulp

J'aimerais lancer une commande Shell à partir de gulp, en utilisant gulp-Shell. Je vois que l'idiome suivant est utilisé dans le fichier gulp.

Est-ce la manière idiomatique d'exécuter une commande à partir d'une tâche gulp?

var cmd = 'ls';
gulp.src('', {read: false})
    .pipe(Shell(cmd, {quiet: true}))
    .on('error', function (err) {
       gutil.log(err);
});
42
Ben

gulp-Shell a été mis sur la liste noire. Vous devriez utiliser gulp-exec , qui a également une meilleure documentation.

Pour votre cas, il est en fait indiqué:

Remarque: Si vous souhaitez simplement exécuter une commande, exécutez-la simplement, n'utilisez pas ce plugin:

var exec = require('child_process').exec;

gulp.task('task', function (cb) {
  exec('ping localhost', function (err, stdout, stderr) {
    console.log(stdout);
    console.log(stderr);
    cb(err);
  });
})
97
ddprrt

La nouvelle façon de faire qui garde la sortie de la console identique (avec des couleurs, par exemple):

voir: https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

var gulp = require('gulp');
var spawn = require('child_process').spawn;

gulp.task('my-task', function (cb) {
  var cmd = spawn('cmd', ['arg1', 'agr2'], {stdio: 'inherit'});
  cmd.on('close', function (code) {
    console.log('my-task exited with code ' + code);
    cb(code);
  });
});
37
AutoSponge

Avec gulp 4 , vos tâches peuvent directement renvoyer un processus enfant pour signaler son achèvement:

'use strict';

var cp = require('child_process');
var gulp = require('gulp');

gulp.task('reset', function() {
  return cp.execFile('git checkout -- .');
});

gulp-v4-running-Shell-commands.md

10
birnbaum