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

时间:2014-10-22 17:47:20

标签: 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'
]);

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

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

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

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

您使用了其他语法吗??

答案 1 :(得分: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);
});

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

答案 2 :(得分:1)

这是一个古老的问题,但是一个很好的选择是django-gulp(https://pypi.python.org/pypi/django-gulp/2.0.0)。当您运行runserve命令时,它将运行您的gulp默认任务(gulpfile需要位于manage.py的同一目录中)。