我的目标是检索被监视文件的文件名并将其传递给gulp-shell
任务,该任务调用make
命令并将该文件名的一部分作为参数传递。
Gulpfile:
var gulp = require("gulp");
var connect = require("gulp-connect");
var debug = require("gulp-debug");
var shell = require("gulp-shell");
var watch = require("gulp-watch");
const PATTERN = "sass/**/*.scss"
// Default tasks to be executed
gulp.task("default", ["connect", "watch"]);
gulp.task("connect", function() {
connect.server({
root: ".",
livereload: true
});
});
gulp.task("watch", function() {
gulp.src(PATTERN)
.pipe(watch(PATTERN))
.pipe(debug())
.pipe(connect.reload())
});
gulp.task("recompile", function() {
// need {{file}}
shell("compiling {{file}}");
});
目录结构如下所示:
.
..
gulpfile.js
sass/folder/file1.scss
sass/folder/folder2/file2.scss
sass/file3.scss
因此,我更改了其中一个.scss文件(比如sass/folder/folder2/file2.scss
,我希望监视任务检索文件名,因此我可以在删除路径后执行make id=file2.scss
之类的操作基名。
我如何才能最好地实现这一目标?
理想情况下,"recompile"
任务只会在文件更改时调用,而不会在最初运行gulp
时调用。
答案 0 :(得分:1)
我在livereload中使用它,但我认为你可以做类似的例子:
gulp.watch([PATTERN]).on("change", function (changeInfo) {
connect.reload();
console.log("Changed: " + changeInfo.path);
});