Gulp - Как написать команду для запуска сервера из gulpfile

После использования Grunt для нескольких проектов я решил попробовать Gulp.

Большинство проектов, над которыми мы работаем, основаны на Python, и обычно мы запускаем их из командной строки: "python manage.py runningerver"

С 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, все безрезультатно. В большинстве случаев я смог напечатать свою строку на консоли, но я havent смог запустить фактическую команду.

Любые идеи?

Ответ 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 runningerver", и передает вывод фляги в выходной поток gulp.

Ответ 3

Это старый вопрос, но хорошей альтернативой является django- gulp (https://pypi.python.org/pypi/django-gulp/2.0.0). Он выполнит вашу задачу gulp по умолчанию при запуске команды runsw (gulpfile должен находиться в том же каталоге manage.py).