我的目录结构如下:

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


我的grunt-copy设置如下:

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


我希望它可以将输出平铺到build中,这样我就可以

build/
    d3.js
    //etc


相反,我得到了构建中原始目录结构的再现:

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


是什么赋予了?我没有正确使用展平吗?

最佳答案

好吧,如果您只想使用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
      }
    ]
  }
}

09-25 15:46