Gulp browsersync重载当一个nunjucks部分文件是修改

k2fxgqgv  于 2022-12-16  发布在  Gulp
关注(0)|答案(1)|浏览(155)

我有一个任务如下:

gulp.task("nunjucks", () => {
  return gulp
    .src([src_folder + "pages/**/*.njk"])
    .pipe(plumber())
    .pipe(
      data(() =>
        JSON.parse(fs.readFileSync(src_folder + "datas/dist/data.json"))
      )
    )
    .pipe(nunjucks())
    .pipe(beautify.html({ indent_size: 2 }))
    .pipe(gulp.dest(dist_folder))
    .pipe(browserSync.stream({match: '**/*.html'}));
 });

gulp.watch([src_folder + '**/*.njk'], gulp.series("nunjucks")).on("change", browserSync.reload);

我的项目结构是这样的:

原子、分子和有机体都包含双截棍的部分。
我遇到的问题是,每当我更新部分文件(例如:organisms/partial1.njk),我的任务会检测pages(我为任务src提供的路径)中所有文件的更改,如下所示:

我只想重新加载包含此部分文件的文件,而不是所有文件。
我该如何解决这个问题?

afdcj2ne

afdcj2ne1#

它不是由你狼吞虎咽的任务来知道你的Nunjuck页面中的哪一个包含部分。也许如果你在你的Pages文件夹中重新分组你的.njk文件,你就可以更好地管理什么被重新加载。下面是未经测试的,但希望传达的想法...

pages/
  - init/
  - other-stuff/

然后,您可以将gulp任务中的src更新为如下内容......

gulp.src([
      '!pages/other-stuff/**/*',
      'pages/init/**/*.njk'
    ])

相关问题