Gulp - 如何从gulpfile向runserver写入命令

Pab*_*con 10 python terminal cmd gulp

在使用Grunt进行几个项目后,我决定尝试一下Gulp.

我们工作的大多数项目都是基于Python的,我们通常从命令行运行它们的方式是:'python manage.py runserver'

使用Grunt,我找到了grunt-bg-shell插件,并且能够像这样运行我的命令:

// see: https://npmjs.org/package/grunt-bg-shell
bgShell: {
  _defaults: {
    bg: true
  },
  runDjango: {
    cmd: 'python <%= paths.manageScript %> runserver 0.0.0.0:<%= port %>'
    //cmd: 'python <%= paths.manageScript %> runserver'
  }
}
grunt.registerTask('serve', [
'bgShell:runDjango',
'watch'
]);
Run Code Online (Sandbox Code Playgroud)

不幸的是,到目前为止我一直无法为Gulp找到类似的插件.我已经尝试过gulp-shell,gulp-run,gulp-exec,但都无济于事.大多数人都能在控制台上打印我的字符串,但我还没能运行实际的命令.

有任何想法吗 ?

vca*_*rel 8

我正在使用gulp-shell运行Flask服务器.我相信它应该与Django一样:

var shell = require('gulp-shell');
gulp.task('flask', shell.task(['. env/bin/activate && python my_script.py']));
Run Code Online (Sandbox Code Playgroud)

你使用了另一种语法吗?


小智 7

你可以这样做:

var process     = require('child_process');

gulp.task('flask', function(){
  var spawn = process.spawn;
  console.info('Starting flask server');
  var PIPE = {stdio: 'inherit'};
  spawn('python', ['manage.py','runserver'], PIPE);
});
Run Code Online (Sandbox Code Playgroud)

这会产生一个运行'python manage.py runserver'的新子进程,并将flask的输出传递给gulp输出流.