Изменить папку dest для gulp

#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 что и вообще не устанавливать свойство!