Компилировать 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
Другие вопросы по тегам