#gulp #nunjucks
#gulp #nunjucks
Вопрос:
Я использую плагин 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
«страницы».
Как я могу этого добиться?
Ответ №1:
Вероятно, вам просто нужно .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'));
});
Комментарии:
1. Я уже использовал ‘.pipe(gulp.dest (dist_folder))’
Ответ №2:
Вы хотите удалить pages
каталог, чтобы, как указано здесь, глобальная база pages
должна быть частью вашего base
:
base
Глобус, который иногда называют родительским глобусом, — это сегмент пути перед любыми специальными символами в строке глобуса. Таким образом,base
/src/js/**.js
глобус is/src/js/
.
Экземпляры Vinyl, созданные с помощью
src()
, создаются сbase
использованием набора глобусов в качестве ихbase
свойства. При записи в файловую систему сdest()
помощью,base
будет удален из выходного пути для сохранения структуры каталогов.
Естественно, она является частью вашей base
(она находится перед globstar **
в вашей src
), поэтому, если вы удалите base
добавленное вами свойство, вы получите желаемое поведение, поскольку
«При записи в файловую систему с помощью dest() файл base
будет удален из выходного пути».
Gulp автоматически установит базовое src_folder "pages"
значение, если вы удалите base
заданную вами опцию.
В качестве альтернативы, если вы хотите конкретно установить base
свойство, вы можете использовать это:
return gulp
.src(src_folder "pages/**/*.njk", {
base: src_folder "pages",
since: gulp.lastRun("nunjucks"),
})
...
что в вашем конкретном случае делает то же самое, base
что и вообще не устанавливать свойство!