Компилировать Jade в HTML, сохраняя структуру папок
Я использую Gulp, Gulp Jade и Gulp Rename для создания статического сайта с каноническими URL-адресами.
В настоящее время этот скрипт:
gulp.task('jade', function() {
return gulp.src('src/views/**/*.jade')
.pipe(jade({
pretty: true
}))
.pipe(rename(function(path){
if (path.basename=='index'){
return;
}
path.dirname=path.basename.split('-').join('/');
path.basename="index";
}))
.pipe(gulp.dest('./public/'))
callback();
});
позволяет мне скомпилировать следующие файлы:
/src/views/index.jade
>> /public/index.html
(домашняя страница)
/src/views/about.jade
>> /public/about/index.html
(о странице)
Это означает, что у меня могут быть канонические URL-адреса на http://example.com/ (для index.jade) и http://example.com/about/ (для about.jade).
Однако я хочу иметь возможность иметь более 1 уровня в структуре URL. Например, если я хотел страницу о Дейве по URL http://example.com/about/dave/
Я бы сделал это:
Я хочу добиться этого:
/src/views/about/dave.jade
>> /public/about/dave/index.html
Но результат таков:
/src/views/about/dave.jade
>> /public/dave/index.html
2 ответа
Вот аналогичный вопрос: Jade to HTML> index.html внутри каталога, названного в честь jade-файла, где вы найдете хороший пример кода для gulp-rename, который работает.
Jade был переименован в "Pug" и теперь сохраняет структуру каталогов по умолчанию, когда ему предоставляется каталог в качестве входных данных для компиляции.
Вот простой пример:
Мопс Источник:
source/
templates/
|-- index.pug
|-- about.pug
partials/
|-- navigation.pug
Команда для компиляции:
pug source --out ./build
Выходы как:
build/
templates/
|-- index.html
|-- about.html
partials/
|-- navigation.html