Running a shell command from gulp

后端 未结 4 1161
小蘑菇
小蘑菇 2020-12-12 18:03

I would like to run a shell command from gulp, using gulp-shell. I see the following idiom being used the gulpfile.

Is this the idiomatic way to run a c

相关标签:
4条回答
  • 2020-12-12 18:37

    The new way to do this that keeps console output the same (e.g., with colors):

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

    0 讨论(0)
  • 2020-12-12 18:43

    With gulp 4 your tasks can directly return a child process to signal task completion:

    '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

    0 讨论(0)
  • 2020-12-12 18:46

    gulp-shell has been blacklisted. You should use gulp-exec instead, which has also a better documentation.

    For your case it actually states:

    Note: If you just want to run a command, just run the command, don't use this 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);
      });
    })
    
    0 讨论(0)
  • 2020-12-12 18:52

    You could simply do this:

    const { spawn } = require('child_process');
    const gulp = require('gulp');
    
    gulp.task('list', function() {
        const cmd = spawn('ls');
        cmd.stdout.on('data', (data) => {
            console.log(`stdout: ${data}`);
        });
        return cmd;
    });
    
    0 讨论(0)
提交回复
热议问题