Eu estou tentando usar Gulp para assistir às minhas alterações de fonte, em seguida, compilar, lint e recarregar meu aplicativo.
Do meu ponto de vista, o gulp.watch não permite a filtragem de recursos, então tudo é recarregado se eu atualizei um arquivo de especificação / teste. Por exemplo:
jsSrc = ["!./app/**/*spec.js", "./app/**/*.js"]
gulp.task("watch", function() {
gulp.watch(jsSrc, ["scripts", "jsLint", "reload"]);
});
Do meu ponto de vista, o gulp-watch permite a filtragem de recursos, no entanto, como faço para acionar outra tarefa.
gulp.task("watch", function() {
gulp.src(jsSrc)
.pipe(require("gulp-watch")())
// how do I call tasks? ["scripts", "jsLint", "reload"]
});
Respostas:
0 para resposta № 1gulp.task("scripts", function(event) {
//event.path (changed file)
//...
});
gulp.task("reload", function() { //... });
gulp.task("watch", function() {
gulp.watch(jsSrc,
//array of tasks to be executed when a file of jsSrc change
["scripts", "reload"]
);
});
0 para resposta № 2
Você não. gulp-watch
é um fluxo que emite todos os arquivos e nunca termina. Então, para cada arquivo alterado, ele é emitido novamente. Você não pode (diretamente) usar isso para acionar uma tarefa.
Porque nunca emite end
e também porque você obtém arquivos únicos "fora de contexto", este plugin é um pouco mais difícil de se trabalhar do que gulp.watch
, que apenas aciona toda a tarefa novamente.
Do que foi dito, eu costumo configurá-lo como
gulp = require("gulp");
gulp.task("a", function() { console.log("a"); });
gulp.task("b", function() { console.log("b"); });
gulp.task("default", ["a","b"], function(){
gulp.watch(["**/*.js","!**/foo.js"], ["a"]);
gulp.watch(["**/*.css","!**/foo.css"], ["b"]);
});
Desta forma, você ignora "foo.js", mas para todos os outros arquivos .js, execute "a", mesmo para b.
Vejo https://github.com/isaacs/minimatch para a sintaxe glob