我通过gulp使用插件gulp-nunjucks-render,如下所示:
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 +“页面”中。
我怎样才能做到这一点呢?
发布于 2021-02-16 00:51:31
您可能只需要按照以下文档添加.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'));
});发布于 2021-02-16 04:17:56
您想要删除pages目录,因此这里提到的glob-base,pages需要是base的一部分
glob
base-有时称为glob parent -是glob字符串中任何特殊字符之前的路径段。因此,/src/js/**.js的全局base是/src/js/。由src()生成的乙烯基类实例是通过将globbase设置为其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属性所做的事情完全相同!
https://stackoverflow.com/questions/66211953
复制相似问题