将bower依赖关系读入grunt文件列表

时间:2013-06-26 15:25:43

标签: gruntjs bower

我正在使用grunt,我想在创建生产分发时复制我的bower依赖项

这些依赖项已存在于./components

我在index.html里面生成一个生产目录,并希望只复制bower.json文件中的依赖项。

我认为这就像从deps生成列表一样简单:

prodComponents = Object.keys(grunt.file.readJSON('./bower.json').dependencies)

(从简单的console.log(prodComponents)生成

[ 'requirejs',
  'requirejs-text',
  'jquery',
  'underscore-amd',
  'backbone-amd',
  'backbone.wreqr',
  'backbone.babysitter',
  'marionette' ]

然后只需复制匹配的文件:

    copy:
        deps:
            files: [
                expand: true
                cwd: './components'
                src: ['./<%= prodComponents %>/*']
                dest: './dev/components'
            ]

这可以,但复制所有组件。即我的文件规范失败

Running "copy:deps" (copy) task
Created 15 directories

如果我删除./然后它失败了:

Warning: Unable to read "components/Applications" file (Error code: ENOENT). Use --force to continue.

无法帮助,但我想我要么过于聪明,要么差点就这样。

我对文件规范的规范做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

我认为你很亲密。我会保存带有应用于prodComponents

的globbing模式的目录
prodComponents = Object.keys(grunt.file.readJSON('./bower.json').dependencies).map(
    function(prodComponent) {
        return prodComponent + "/**/*";
    }
);

因此prodComponents将包含:

["requirejs/**/*",
 "requirejs-text/**/*",
 "jquery/**/*",
 "underscore-amd/**/*",
 "backbone-amd/**/*",
 "backbone.wreqr/**/*",
 "backbone.babysitter/**/*",
 "marionette/**/*" ]

copy配置为:

copy:
    deps:
        files: [
            expand: true
            cwd: 'components'
            src: '<%= prodComponents %>'
            dest: 'dev/components'
        ]

请注意,为了能够以这种方式在模板中使用prodComponents,需要在grunt config中设置。