首页 > 用gulp.watch编译jade,对新建的jade文件无效

用gulp.watch编译jade,对新建的jade文件无效

gulpfile.js如下

var gulp = require('gulp'),
    jade = require('gulp-jade'),
    plumber = require('gulp-plumber'),
    path = require('path');

gulp.task('jade', function() {
    return gulp.src('./**/*.jade')
    .pipe(jade())
    .pipe(gulp.dest('./'));
});

gulp.task('watch', function() {
    gulp.watch('./**/*.jade', function(e) {
        var p = e.path.replace(__dirname, '')
            .replace(/\/[^\/]+?\.jade$/, '/');
        console.log(e.type + ':' + p);
        gulp.src(e.path)
            .pipe(plumber(
                function(e) {
                    console.log(e.toString());
                }
            ))
            .pipe(jade())
            .pipe(gulp.dest('.' + p));
    });
});

gulp.task('default', ['jade']);

已经存在的jade文件能正常编译,
但新建的jade文件修改保存后都不会触发编译,
需要中断gulp重新启动任务才可以。
这是为什么呢?


gulp.task('watch', function() {
gulp.watch('**/*.jade', ['jade']);
});

去掉 ./ 就可以了


gulp.task('watch', function() {
    gulp.watch('./**/*.jade', ['jade']);
});

gulp.task('default', ['jade','watch']);


'./**/*.jade'
用这个匹配路径会出现这种情况,
如果用'**/*.jade'或指明路径就解决了

【热门文章】
【热门文章】