Gulp 更改 Gulp 的目标文件夹

jgzswidk  于 2022-12-08  发布在  Gulp
关注(0)|答案(2)|浏览(215)

我使用的插件gulp-nunjucks-render与gulp如下:

gulp.task("nunjucks", () => {
  return gulp
    .src(src_folder + "pages/**/*.njk", {
      base: src_folder,
      since: gulp.lastRun("nunjucks"),
    })
    .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());
});

我希望生成的html文件在dist_folder中,而不是在dist_folder +“页面”中。
我怎么才能做到呢?

bbuxkriu

bbuxkriu1#

您可能只需要按照以下文档附加.pipe(dest('dist_folder'))https://gulpjs.com/docs/en/api/dest/

gulp.task("nunjucks", () => {
  return gulp
    .src(src_folder + "pages/**/*.njk", {
      base: src_folder,
      since: gulp.lastRun("nunjucks"),
    })
    .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())
    .pipe(dest('dist_folder'));
});
oknwwptz

oknwwptz2#

您想要删除pages目录,因此这里提到的glob-base,pages需要成为base的一部分:
glob base(有时也称为glob parent)是glob字符串中任何特殊字符之前的路径段。因此,/src/js/**.js的glob base/src/js/
src()生成的乙烯基示例是通过将glob base设置为它们的base属性来构造的。当使用dest()写入文件系统时,base将从输出路径中删除以保留目录结构。
它自然是base的一部分(在src中,它位于globstar **之前),因此,如果删除添加的base属性,将获得所需的行为,因为

  • *"使用dest()写入文件系统时,base将从输出路径中删除"**。

如果您删除设置的base选项,Gulp会自动将基数设置为src_folder + "pages"
或者,如果您确实要特别设定base属性,可以使用下列方式:

return gulp
    .src(src_folder + "pages/**/*.njk", {
      base: src_folder  + "pages",
      since: gulp.lastRun("nunjucks"),
    })
...

这在您的特定情况下与根本不设置base属性的作用完全相同!

相关问题