Пути сгенерированных страниц с сборкой

Я борюсь с конфигурацией задачи grunt-сборки grunt, которая выглядит следующим образом:

assemble: {
  options: {
    flatten: false,
    expand: true,

    assets: '',

    layout: 'default.hbs',
    layoutdir: 'templates/layouts',

    partials: ['templates/includes/*.hbs'],
    helpers: ['templates/helpers/*.js'],
    data: ['templates/data/*.{json,yml}']
  },

  dev: {
    src: 'templates/pages/**/*.hbs',
    dest: 'build/'
  }

Леса шаблонов проекта для assembly.io выглядят так:

templates
├── helpers
├── includes
│   ├── page-footer.hbs
│   ├── page-header.hbs
│   └── scripts.hbs
├── layouts
│   └── default.hbs
└── pages
    ├── en
    │   └── index.hbs
    ├── fr
    │   └── index.hbs
    └── index.hbs

Мое желание пойти и получить что-то вроде:

build
├── en
│   └── index.html
├── fr
│   └── index.html
└── index.html

Но вместо этого я получаю что-то вроде:

build
└── templates
    └── pages
        ├── en
        │   └── index.html
        ├── fr
        │   └── index.html
        └── index.html

Я попробовал несколько (много на самом деле) комбинаций (с flatten а также expand так же хорошо как cwd варианты) но я застрял.

С помощью flatten для того, чтобы сделать index.html файлы перезаписывать друг друга.

Поэтому я на самом деле выполняю рендеринг в каталог .tmp, а затем перемещаю файлы в каталог сборки. Мне не нравится это решение, потому что тогда page.assets все еще сломан (его значение будет ../../.., для корневого index.html).

2 ответа

Решение

Грунт-сборки

(Обратите внимание, что эта информация относится конкретно к grunt-assembly 0.4.x, который является плагином grunt для сборки, но имеет совершенно другой API)

У @doowb почти все правильно, попробуйте добавить expand: true а также ext: '.html' к файлам конфигурации:

assemble: {
  options: {
    flatten: false,
    expand: true,

    assets: '',

    layout: 'default.hbs',
    layoutdir: 'templates/layouts',

    partials: ['templates/includes/*.hbs'],
    helpers: ['templates/helpers/*.js'],
    data: ['templates/data/*.{json,yml}']
  },

  dev: {
    files: [
      {expand: true, cwd: 'templates/pages/', src: '**/*.hbs', dest: 'build/', ext: '.html'}
    ]
  }
}

Также взгляните на https://github.com/assemble/assemble-contrib-permalinks

собрать 0.7.x

Коллекции являются первоклассными в сборке 0.7.0, как и плагины, поэтому такие вещи, как генерация относительных ссылок, разбиение на страницы и создание пользовательских постоянных ссылок, гораздо проще сделать.

Если вы используете ассемблер 0.7.x и выше, то плагин, который вы хотите использовать, - это сборка-постоянные ссылки.

Вы пытались использовать расширенный files объект для ворчливых целей с cwd имущество?

assemble: {
  options: {
    flatten: false,
    expand: true,

    assets: '',

    layout: 'default.hbs',
    layoutdir: 'templates/layouts',

    partials: ['templates/includes/*.hbs'],
    helpers: ['templates/helpers/*.js'],
    data: ['templates/data/*.{json,yml}']
  },

  dev: {
    files: [
      { cwd: 'templates/pages/', src: '**/*.hbs', dest: 'build/' }
    ]
  }
}
Другие вопросы по тегам