【问题标题】:Gulp - How to write command to runserver from gulpfileGulp - 如何从 gulpfile 编写命令到 runserver
【发布时间】:2014-12-18 06:40:08
【问题描述】:

在将 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,都无济于事。大多数我能够在控制台上打印我的字符串,但我无法运行实际的命令。

有什么想法吗?

【问题讨论】:

    标签: python terminal cmd gulp


    【解决方案1】:

    我正在使用 gulp-shell 来运行 Flask 服务器。我相信它应该与 Django 以同样的方式工作:

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

    您是否使用了其他语法...?

    【讨论】:

      【解决方案2】:

      你可以这样做:

      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输出流。

      【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-08
        • 1970-01-01
        • 1970-01-01
        • 2017-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多