2016-01-28 55 views
3

我有一個Gulp任務,wire將應用程序JavaScript注入到index.html中。文件添加和刪除的Gulp手錶

我想有另一咕嘟咕嘟任務,watch,該手錶在JavaScript文件的更改,並運行wire如果有一個新的文件添加現有文件中刪除。下面

的任務完成了這一過程:

gulp.task('wire', function() { 
    var injectScripts = gulp.src('src/app/**/*.js'); 

    return gulp.src(path.join(conf.paths.base, 'index.html')) 
     .pipe($.inject(injectScripts, {})) 
     .pipe(gulp.dest(path.join(conf.paths.base))); 
}); 

gulp.task('watch', function() { 
    var watcher = gulp.watch(path.join(conf.paths.src, '/app/**/*.js')); 

    watcher.on('change', function (ev) { 
     if (ev.type === 'added' || ev.type === 'deleted') { 
      gulp.run('wire'); 
     } 
    }); 
}); 

不幸的是,它看起來像這樣的方法是棄用。在運行時,我會在控制檯中收到棄用通知:

gulp.run()已被棄用。改爲使用任務依賴關係或gulp.watch 任務觸發。

當我換出gulp.run()gulp.start()(這似乎幾乎沒有任何文件),該文件修改的index.html的滯後(他們需要幾分鐘穿過去,這是奇怪)。

很顯然,我可以改變我的watch任務只運行wire每當引發JavaScript文件的更改,並不能過濾基於事件的類型,但它似乎像一個巨大的不必要的處理廢棄物運行wire當現有文件的更改:

gulp.watch('src/app/**/*.js', ['wire']); 

建議的Gulp策略是什麼?

回答

2

看看這個曠日持久的討論this link

var wire = function() { 
    var injectScripts = gulp.src('src/app/**/*.js'); 

    return gulp.src(path.join(conf.paths.base, 'index.html')) 
     .pipe($.inject(injectScripts, {})) 
     .pipe(gulp.dest(path.join(conf.paths.base))); 
}; 

gulp.task('wire', function() { 
    wire(); 
}); 

gulp.task('watch', function() { 
    var watcher = gulp.watch(path.join(conf.paths.src, '/app/**/*.js')); 

    watcher.on('change', function (ev) { 
     if (ev.type === 'added' || ev.type === 'deleted') { 
      wire();    
     } 
    }); 
}); 
+0

這是有道理的,謝謝!我已經瀏覽了該主題,但錯過了這一點。 – Mike