/ / No gulp, como assistir a um conjunto de arquivos filtrados e, em seguida, chamar uma tarefa? - gulp, gulp-watch

No gulp, como assistir a um conjunto de arquivos filtrados e chamar uma tarefa? - gulp, gulp-watch

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 № 1
gulp.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