2016-07-09 13 views
0

Ich bin neu in Gulp und ich fand ein Gulpfile.js Beispiel, das ich verwenden wollte, um den Server meiner Express-App live zu laden, wenn eine Änderung in meiner stattfindet app.js Datei oder ./public Verzeichnis. Hier ist der Gulpfile.js Code:Gulp Fix "gulp.run() ist veraltet" für Server Liveload

var gulp = require('gulp'), 
    spawn = require('child_process').spawn, 
    node; 

/** 
* $ gulp server 
* description: Launch the server. If there's a server already running, kill it. 
*/ 
gulp.task('server', function() { 
    if (node) node.kill() 

    node = spawn('node', ['app.js'], {stdio: 'inherit'}) 

    node.on('close', function (code) { 
    if (code === 8) { 
     gulp.log('Error detected, waiting for changes...'); 
    } 
    }); 
}) 

/** 
* $ gulp default 
* description: Start the development environment 
*/ 
gulp.task('default', function() { 
    gulp.run('server') 

    gulp.watch(['./app.js', './public/'], function() { 
    gulp.run('server') 
    }) 
}) 

// clean up if an error goes unhandled. 
process.on('exit', function() { 
    if (node) node.kill() 
}) 

In meinem Terminal-Fenster Ich erhalte die folgende Warnung:

gulp.run() has been deprecated. Use task dependencies or gulp.watch task triggering instead. 

Gulp arbeitet und es ist livereloading die Web-Anwendung wie ich es will, aber ich Ich möchte dieses Problem beheben, um meinen Entwicklungsprozess zukunftssicher zu machen und diese nervige Warnmeldung loszuwerden.

Danke für die Hilfe!

Antwort

1

Eine Möglichkeit wäre, einfach alle Vorkommen von gulp.run() mit gulp.start() zu ersetzen:

gulp.task('default', function() { 
    gulp.start('server'); 

    gulp.watch(['./app.js', './public/'], function() { 
    gulp.start('server'); 
    }); 
}); 

jedoch eine Aufgabe expliziten Aufruf gulp.start() Verwendung ist nicht der idiomatische Weg der Dinge in großem Schluck zu tun (auch wenn es manchmal notwendig, es ist).

Die Warnmeldung Sie bereits erhalten Hinweise auf die idiomatische Weg, dies zu lösen:

Verwenden Aufgabe Abhängigkeiten oder gulp.watch Aufgabe auslösenden

  • Task dependencies ermöglicht es Ihnen, eine Aufgabe auszuführen, bevor eine andere Aufgabe. Das bedeutet, dass Sie die erste gulp.run() loswerden können.
  • Task triggering in gulp.watch() können Sie eine Aufgabe ausführen, wenn eine Datei ändert. Das bedeutet, dass Sie die zweite gulp.run() loswerden können.

Deshalb ist ihre default Aufgabe wie folgt aussehen endet:

gulp.task('default', ['server'], function() { 
    gulp.watch(['./app.js', './public/'], ['server']); 
}); 
+0

Ich hatte einen anfänglichen Fehler, aber das war zu meinem Benutzerfehler zurückzuführen. Danke für die Hilfe, ich schätze es sehr, Ihre Lösung wirkt wie ein Zauber! – Corey