我正在努力应对grunt-assemble 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/'
}
assemble.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 目录,然后将文件移动到 build 目录。
我不喜欢这个解决方案,因为那时page.assets
仍然已经(对于root index.html,它的值将是../../..
。
答案 0 :(得分:8)
<强>咕噜组装强>
(请注意,此信息特指grunt-assemble 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中的第一类集合,插件也是如此,因此生成相对链接,构建分页和创建自定义永久链接等操作要容易得多。
如果你正在使用assembly 0.7.x及更高版本,assemble-permalinks是你想要使用的插件。
答案 1 :(得分:2)
您是否尝试将展开的files
对象用于具有cwd
属性的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: {
files: [
{ cwd: 'templates/pages/', src: '**/*.hbs', dest: 'build/' }
]
}
}