Скомпилируйте 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


person David Ingledow    schedule 16.11.2015    source источник


Ответы (2)


Вот аналогичный вопрос: Jade to HTML › index.html внутри каталога, названного в честь файла jade, где вы найдете хороший пример кода для gulp-rename, который действительно работает.

person Sergey Pozhilov    schedule 16.12.2015

Jade был переименован в «Pug» и теперь сохраняет структуру каталогов по умолчанию, когда каталог передается в качестве входных данных для компиляции.

Вот простой пример:

Источник мопса:

source/
    templates/
      |-- index.pug
      |-- about.pug
    partials/
      |-- navigation.pug

Команда для компиляции:

pug source --out ./build

Выводит как:

build/
    templates/
      |-- index.html
      |-- about.html
    partials/
      |-- navigation.html
person Isaac Gregson    schedule 11.05.2016