Пути сгенерированных страниц с сборкой
Я борюсь с конфигурацией задачи 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/' }
]
}
}