Die folgende Gulpjs-Aufgabe funktioniert einwandfrei, wenn Sie Dateien in der Glob-Übereinstimmung bearbeiten:
// watch task.
gulp.task('watch', ['build'], function () {
gulp.watch(src + '/js/**/*.js', ['scripts']);
gulp.watch(src + '/img//**/*.{jpg,jpeg,png,gif}', ['copy:images']);
gulp.watch(src + '/less/*.less', ['styles']);
gulp.watch(src + '/templates/**/*.{swig,json}', ['html']);
});
// build task.
gulp.task('build', ['clean'], function() {
return gulp.start('copy', 'scripts', 'less', 'htmlmin');
});
Es funktioniert jedoch nicht (es wird nicht ausgelöst) für neue oder gelöschte Dateien. Fehlt mir etwas?
EDIT : Selbst mit dem Grunt-Watch-Plugin scheint es nicht zu funktionieren:
gulp.task('scripts', function() {
return streamqueue(
{ objectMode: true },
gulp.src([
vendor + '/jquery/dist/jquery.min.js',
vendor + '/bootstrap/dist/js/bootstrap.min.js'
]),
gulp.src([
src + '/js/**/*.js'
]).pipe(plugins.uglify())
)
.pipe(plugins.concat(pkg.name + '.min.js'))
.pipe(gulp.dest(dest + '/js/'));
});
gulp.task('watch', ['build'], function () {
plugins.watch({glob: src + '/js/**/*.js'}, function () {
gulp.start('scripts');
});
});
EDIT : Gelöst, es war dieses Problem . Globs, die mit ./
(das war der Wert von src
) beginnen, scheinen nicht am Geldautomaten zu funktionieren.
javascript
node.js
gulp
Gremo
quelle
quelle
gulp-watch
zBgulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
Antworten:
Bearbeiten: Funktioniert anscheinend
gulp.watch
jetzt mit neuen oder gelöschten Dateien. Es war nicht so, als die Frage gestellt wurde.Der Rest meiner Antwort bleibt bestehen:
gulp-watch
ist normalerweise eine bessere Lösung, da Sie damit bestimmte Aktionen nur für die geänderten Dateien ausführen können, währendgulp.watch
Sie nur vollständige Aufgaben ausführen können. Für ein Projekt von angemessener Größe wird dies schnell zu langsam, um nützlich zu sein.Ihnen fehlt nichts.
gulp.watch
funktioniert nicht mit neuen oder gelöschten Dateien. Es ist eine einfache Lösung für einfache Projekte.Verwenden Sie das
gulp-watch
Plugin , das viel leistungsfähiger ist, damit Dateien nach neuen Dateien gesucht werden können. Die Verwendung sieht folgendermaßen aus:Persönlich empfehle ich die erste Option. Dies ermöglicht viel schnellere Prozesse pro Datei. Es funktioniert hervorragend während der Entwicklung mit Livereload, solange Sie keine Dateien verketten.
Sie können Ihre Streams entweder über meine
lazypipe
Bibliothek oder einfach über eine Funktion undstream-combiner
wie folgt abschließen:UPDATE 15. Oktober 2014
Wie von @pkyeck unten ausgeführt, hat anscheinend die Version 1.0
gulp-watch
das Format geringfügig geändert, sodass die obigen Beispiele nun lauten sollten:und
quelle
Beides
gulp.watch()
undrequire('gulp-watch')()
wird für neue / gelöschte Dateien ausgelöst, jedoch nicht, wenn Sie absolute Verzeichnisse verwenden. In meinen Tests habe ich übrigens nicht"./"
für relative Verzeichnisse verwendet.Beide werden jedoch nicht ausgelöst, wenn ganze Verzeichnisse gelöscht werden.
quelle
./
auf ihren Wegen - eigentlich scheint es eine schlechte Praxis zu sein - github.com/floatdrop/gulp-watch/issues/1gulp-watch
richtig zu arbeiten, um neue oder gelöschte Dateien auszulösen. Das ist nicht nötig!gulp.watch
macht dies. Durch Entfernen aller Elemente./
aus den Pfaden wurden Probleme behoben. Genial.Wenn
src
es sich um einen absoluten Pfad handelt (beginnend mit/
), erkennt Ihr Code keine neuen oder gelöschten Dateien. Es gibt jedoch noch einen Weg:Anstatt:
schreiben:
und es wird funktionieren!
quelle
{ cwd: src }
Hinweis war meine Lösung. Vielen Dank!watch
{cwd:'./'}
das Glob-Muster hinzu und lassen Sie es so, wie es sein würdegulp.watch('src/js/**/*.js', {cwd: './'}, ['scripts']);
Für Globs muss ein separates Basisverzeichnis angegeben werden, und dieser Basisverzeichnis darf nicht im Glob selbst angegeben werden.
Wenn Sie haben
lib/*.js
, wird es unter dem aktuellen Arbeitsverzeichnis angezeigtprocess.cwd()
Gulp verwendet Gaze zum Überwachen von Dateien. Im Gulp-API-Dokument sehen wir, dass wir Gaze-spezifische Optionen an die Überwachungsfunktion übergeben können:
gulp.watch(glob[, opts], tasks)
Jetzt können wir im Gaze-Dokument feststellen, dass das aktuelle Arbeitsverzeichnis (glob base dir) die
cwd
Option ist.Was uns zu Alexks Antwort führt:
gulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
quelle
Ich weiß, dass dies eine ältere Frage ist, aber ich dachte, ich würde die Lösung werfen, die ich mir ausgedacht habe. Keines der gefundenen gulp-Plugins würde mich über neue oder umbenannte Dateien informieren. Also habe ich Monokel in eine Convenience-Funktion eingewickelt.
Hier ist ein Beispiel für die Verwendung dieser Funktion:
Ich sollte beachten, dass gulpStart auch eine von mir erstellte Komfortfunktion ist.
Und hier ist das eigentliche Uhrenmodul.
Ziemlich einfach, oder? Das Ganze finden Sie in meinem Gulp Starter Kit: https://github.com/chrisdavies/gulp_starter_kit
quelle
utils
Ordner)Es ist wichtig zu beachten, dass gulp.watch anscheinend nur geänderte und gelöschte Dateien unter Windows meldet, aber unter OSX standardmäßig auf neue und gelöschte Dateien wartet:
https://github.com/gulpjs/gulp/issues/675
quelle
Sie sollten 'gulp-watch' für neue / umbenannte / gelöschte Dateien anstelle von gulp.watch verwenden
quelle