带有汇编的生成页面的路径

zer*_*per 9 gruntjs assemble grunt-assemble

我正在努力处理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/'
  }
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我希望得到类似的东西:

build
??? en
?   ??? index.html
??? fr
?   ??? index.html
??? index.html
Run Code Online (Sandbox Code Playgroud)

但相反,我得到类似的东西:

build
??? templates
    ??? pages
        ??? en
        ?   ??? index.html
        ??? fr
        ?   ??? index.html
        ??? index.html
Run Code Online (Sandbox Code Playgroud)

我确实尝试了一些(实际上很多)组合(使用flatten和expand以及cwd选项)但我被卡住了.

使用flattenhas会导致index.html文件相互覆盖.

所以我实际上将渲染转换为.tmp目录,然后将文件移动到构建目录.我不喜欢那个解决方案,因为那时,page.assets它仍然被打破(它的值将是../../..,对于根index.html).

jon*_*ert 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'}
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

另请参阅https://github.com/assemble/assemble-contrib-permalinks

装配0.7.x.

集合是0.7.0中的第一类集合,插件也是如此,因此生成相对链接,构建分页和创建自定义永久链接等操作要容易得多.

如果你正在使用assembly 0.7.x及更高版本,那么assembly -permalinks就是你想要使用的插件.

  • 非常感谢你!我正在寻找正确的地方,但它与`files`对象或其他可能的语法有点混淆. (2认同)