2014-10-22 15 views
10

Dopo aver usato Grunt per un paio di progetti, ho deciso di provare Gulp.Gulp - Come scrivere il comando a runserver da gulpfile

maggior parte dei progetti su cui lavoriamo sono basate Python, e il modo in cui di solito sono eseguiti dalla riga di comando è: 'python manage.py runserver'

Con Grunt, ho trovato il grugnito-bg-shell plug-in, ed è stato in grado di eseguire il mio comando come questo:

// 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' 
]); 

Purtroppo, finora sono stato in grado di trovare un plugin simile per Gulp. Ho provato gulp-shell, gulp-run, gulp-exec, tutto inutilmente. Con la maggior parte in grado di stampare la mia stringa sulla console, ma non ho potuto eseguire il comando attuale.

Qualche idea?

risposta

8

Sto utilizzando gulp-shell per eseguire un server Flask. Credo che dovrebbe funzionare allo stesso modo con Django:

Hai usato un'altra sintassi ...?

7

Si può fare questo:

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); 
}); 

Questo genera un nuovo processo figlio in esecuzione 'python manage.py runserver' e passa l'uscita del pallone per inghiottire flusso di output.

1

È una vecchia domanda, ma una buona alternativa è django-gulp (https://pypi.python.org/pypi/django-gulp/2.0.0). Eseguirà l'attività predefinita di gulp quando si esegue il comando runserve (gulpfile deve trovarsi nella stessa directory di manage.py).

Problemi correlati