2013-06-26 43 views
4

我使用的咕噜咕噜的文件列表,我想复制我的凉亭依赖创建生产分发阅读凉亭相依为

这些依赖于./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. 

不禁觉得我既想成为太聪明,或与此接近那里。

我在做什么错误的文件规范的规范?

谢谢

回答

2

我觉得你很近。我想保存的目录与文件名替换应用到prodComponents模式:

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

+0

不像我最初设想的那样简洁,但是很有用。谢谢 – Joe

+2

供参考:prodComponent +“/ *”应该是prodComponent +“/ **/*”来捕获子目录。 – Joe

+0

@Joe固定,谢谢! –