Gulp - 从src()获取文件名

时间:2015-10-30 12:45:03

标签: javascript node.js gulp

我的目标是检索被监视文件的文件名并将其传递给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时调用。

1 个答案:

答案 0 :(得分:1)

我在livereload中使用它,但我认为你可以做类似的例子:

gulp.watch([PATTERN]).on("change", function (changeInfo) {
    connect.reload();
    console.log("Changed: " + changeInfo.path);
});