Me gustaría ejecutar un comando de shell desde gulp, usando gulp-shell . Veo que se usa el siguiente idioma en el archivo gulp.
¿Es esta la forma idiomática de ejecutar un comando desde una tarea de trago?
var cmd = 'ls'; gulp.src('', {read: false}) .pipe(shell(cmd, {quiet: true})) .on('error', function (err) { gutil.log(err); });gulp-shell ha sido incluido en la lista negra. Debería usar gulp-exec en su lugar, que también tiene una mejor documentación.
Para su caso, en realidad dice:
Nota: si solo desea ejecutar un comando, simplemente ejecute el comando, no use este complemento:
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); }); })La nueva forma de hacer esto que mantiene la salida de la consola igual (por ejemplo, con colores):
consulte: 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); }); });Con gulp 4 , sus tareas pueden devolver directamente un proceso secundario para señalar la finalización de la tarea:
'use strict'; var cp = require('child_process'); var gulp = require('gulp'); gulp.task('reset', function() { return cp.execFile('git checkout -- .'); });