使用Gulp检测多个源文件之间的更改

时间:2018-03-12 11:01:53

标签: javascript gulp nunjucks gulp-4 gulp-nunjucks-render

我遇到的原始问题是该任务在src.pages内存在的文件数量运行了x次,我通过添加“就地更改”修复了此问题。插件,比较源文件的最后修改日期。这意味着如果修改后的日期没有改变,那么它就不会运行,或者如果它已经改变那么它就会运行,但只会运行一段时间。

因为插件只根据传递给流的目录检查文件,这意味着它不会检查src.templates内的文件,这基本上是我的.html部分文件文件夹。我运行的解决方法是让一个单独的任务监视部分文件更改,但不运行任何比较功能,这意味着我仍然有多次运行任务的原始问题。

已更新:以下是我的gulpfile的精简版,其中包含与我的问题相关的所有内容:

var fileFormat = 'html',
    fileExt = '.' + fileFormat;

var src = {
    pages: 'src/pages/**/*' + fileExt,
    templates: 'src/templates/**/*' + fileExt,
};

var dist = {
    pages: './',
    css: './',
};

var config = {
    templates: ['src/templates/', 'src/partials/'],
    pagesWatch: './*' + fileExt, // Directory where pages are output

};

// Browser Sync with code/HTML injection
function bs() {
    browserSync.use(htmlInjector, {
        files: dist.pages + '*' + fileExt
    });
    browserSync.init({
        server: dist.pages,
        files: dist.css + '*.css',
        watchOptions: {
            awaitWriteFinish: {
                stabilityThreshold: 500
            }
        }
    });
}

function nunjucksPages() {
    nunjucksRender.nunjucks.configure([src.templates]);
    return gulp.src([src.pages])
        .pipe(changedInPlace())
        .pipe(nunjucksRender({
            path: config.templates,
            ext: fileExt
        }))
        .pipe(gulp.dest(dist.pages))
}

// Use CommonJS 'exports' module notation to declare tasks
exports.nunjucksPages = nunjucksPages;
exports.bs = bs;

function watch() {
    gulp.watch([src.pages, src.templates], gulp.series(nunjucksPages));
    gulp.watch(config.pagesWatch, gulp.series(htmlInjector));
}

// Runs all the required tasks, launches browser sync, and watches for changes
var build = gulp.series(clean, gulp.parallel(nunjucksPages));
var run = gulp.parallel(bs, watch);

gulp.task('default', gulp.series(build, run));

编辑以供澄清:我有一项任务正在查看页面和模板目录以进行更改,一旦完成,它就会运行nunjucksPages功能。在nunjucks编译HTML之后,浏览器同步将检测到这一点并注入HTML(我的代码中的第二个监视任务)。

我现有的解决方法是复制两个nunjucks函数,并独立运行它们 - 页面功能与缓存(单个重载,问题修复!),模板功能没有缓存(每X重新加载)页面)。

相关问题和评论https://github.com/carlosl/gulp-nunjucks-render/issues/47#issuecomment-240962074

0 个答案:

没有答案