9

我正在努力解决如下所示的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

我确实尝试了一些(实际上很多)组合(使用flattenexpand以及cwd选项),但我被卡住了。

使用flatten具有使index.html文件相互覆盖的后果。

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

4

2 回答 2

8

咕哝组装

(请注意,此信息特指 grunt-assemble 0.4.x,它是 assemble 的 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

集合在 assemble 0.7.0 中是一流的,插件也是如此,因此生成相对链接、构建分页和创建自定义永久链接等事情要容易得多。

如果您使用的是 assemble 0.7.x 及更高版本,则assemble-permalinks是您想要使用的插件。

于 2013-11-23T04:29:50.960 回答
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/' }
    ]
  }
}
于 2013-11-21T21:35:55.573 回答