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

私はいくつかの (実際にはたくさんの) 組み合わせを (オプションと同様に と を使って) 試しましたが、flatten行き詰まりexpandましcwdた。

flattenhas for results を使用して、index.htmlファイルが互いに上書きされるようにします。

そのため、実際にレンダリングを.tmpディレクトリに行ってから、ファイルをビルドディレクトリに移動します。私はその解決が好きではありませpage.assetsん.../../..

4

2 に答える 2

2

プロパティfilesで grunt ターゲットに展開されたオブジェクトを使用してみましたか?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/' }
    ]
  }
}
于 2013-11-21T21:35:55.573 に答える