在使用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,但都无济于事。大多数人都能在控制台上打印我的字符串,但我还是无法运行实际的命令。
有什么想法吗?
答案 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的同一目录中)。