Grunt Copy Flatten无法按预期工作

时间:2013-12-23 23:03:37

标签: gruntjs grunt-contrib-copy

我的目录结构如下:

source/
    libraries/
        d3.js
        lodash.js
        //etc

我有如下的grunt-copy设置:

copy: {
  main: {
    files: [
      {
        src: ["source/libraries/*.js"], 
        dest: "build/", 
        flatten: true
      }

我希望它将输出变为构建,这样我就可以了

build/
    d3.js
    //etc

相反,我在build中获得了原始目录结构的再现:

build/
    source/
        libraries/
            d3.js
            //etc

是什么给出的?我没有正确使用扁平化吗?

1 个答案:

答案 0 :(得分:21)

好吧,如果您只使用flatten,因为您希望source/libraries中的所有内容都进入build,我建议您实际使用cwd(当前工作目录) )而是选项。另一方面,如果您实际上在source/libraries中有子文件夹,那么您可能希望src行为source/libraries/**/*.js

在任何情况下,如果您可以使用cwd,它将如下所示:

copy: {
  main: {
    files: [
      {
        src: ["*.js"],
        dest: "build/",
        cwd: "source/libraries/"
      }
    ]
  }

对于另一种情况,也许这个? (请注意expand选项设置为true

copy: {
  main: {
    files: [
      {
        src: ["source/libraries/**/*.js"],
        dest: "build/",
        flatten: true,
        expand: true
      }
    ]
  }
}