如何配置 grunt 复制任务

how to configure grunt copy task

我有一个目录:

- app/
    - monday/
          a.js
          b.js
    - tuesday/
          a.js
          b.js

我在Grunt中配置如下:

files: [{
    expand: true,
    cwd: '<%= yeoman.app %>/',
    src: ['**/*.js'],
    dest: '<%= yeoman.dist %>/',
    ext: '.js'
}]

然后 Grunt 将创建一个目录:

- build/
    - monday/
          a.js
          b.js
    - tuesday/
          a.js
          b.js

但是我怎样才能得到这样创建的目录结构:

- build/
    - monday/
        - wrap/
              a.js
              b.js
    - tuesday/
        - wrap/
              a.js
              b.js

我试过了

files: [{
    expand: true,
    cwd: '<%= yeoman.app %>/',
    src: ['**/*.js'],
    dest: '<%= yeoman.dist %>/**/wrap',
    ext: '.js'
}]

和...但是 none 他们的工作。

我认为当前配置不可能做到这一点,因为您想在“**”检索到的结构化层次结构中插入文件夹。

但是

人们总是忘记 Grunt 文件不仅是声明性的,因为它在您查看时可能会出现,而且它是 plain Javascript 因此您可以编写一个函数来抓取 src(如 src: [getMySourceFiles()]),你可以编写另一个函数到 return dest 值:dest: placeThemHere(). 此外,您可以编写一个函数,将 return 整个配置对象 复制 或更多部分。

这样您就可以以您可以处理的最复杂的方式使用它。

希望这可以帮助任何人记住 grunt 实际上是 javascript,而不是 json。