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).