Tôi đang sử dụng mẫu Xem Gulp này: https://github.com/floatdrop/gulp-watch/blob/master/docs/readme.md#starting-tasks-on-events.Đồng hồ Gulp chỉ chạy một lần
var gulp = require('gulp');
var watch = require('gulp-watch');
var batch = require('gulp-batch');
gulp.task('build', function() { console.log('Working!'); });
gulp.task('watch', function() {
watch('**/*.js', batch(function() {
gulp.start('build');
}));
});
Khi tôi chạy nó trên máy tính Windows 8 của tôi, nó chỉ chạy lần đầu tiên tôi thay đổi một tập tin:
C:\test>gulp watch
[08:40:21] Using gulpfile C:\test\gulpfile.js
[08:40:21] Starting 'watch'...
[08:40:21] Finished 'watch' after 2.69 ms
[08:40:31] Starting 'build'...
Working!
[08:40:31] Finished 'build' after 261 µs
Lần sau có gì xảy ra. Tại sao?
Bạn có thay đổi bất kỳ tệp nào không? Bởi vì bạn khi bạn thực hiện đồng hồ gulp, nó đang xem các tập tin. Khi bạn thay đổi một tập tin, chức năng trong đồng hồ được kích hoạt. – blablabla
Có, có thể tôi không đủ rõ ràng. Tôi đang thay đổi các tập tin, nhưng 'xem' chỉ được thực hiện lần đầu tiên tôi thay đổi một tập tin. Ví dụ.nếu tôi bắt đầu 'gulp watch', thay đổi một cái gì đó trong tập tin * .js của tôi và lưu nó, xem đang chạy. Nếu tôi sau đó thay đổi một cái gì đó khác trong cùng một tập tin và lưu nó một lần nữa, sau đó xem không chạy. Quá trình 'gulp watch' vẫn đang chạy, nhưng không có gì xảy ra. – dhrm
Nếu bạn vẫn muốn sử dụng 'gulp-batch', việc sử dụng đúng là có một cuộc gọi lại' done' ở đó: 'done' - là gọi lại cho tín hiệu chức năng của bạn thành batch, rằng bạn đã hoàn tất. Vì vậy: 'gulp.task ('watch', function() { watch ('**/*. Js', batch (function (events, done) { gulp.start ('build'); \t \t done(); })); }); ' – nemesv