Grunt Copy Flatten无法按预期工作

dan*_*ion 14 gruntjs grunt-contrib-copy

我有一个目录结构如下:

source/
    libraries/
        d3.js
        lodash.js
        //etc
Run Code Online (Sandbox Code Playgroud)

我有如下的grunt-copy设置:

copy: {
  main: {
    files: [
      {
        src: ["source/libraries/*.js"], 
        dest: "build/", 
        flatten: true
      }
Run Code Online (Sandbox Code Playgroud)

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

build/
    d3.js
    //etc
Run Code Online (Sandbox Code Playgroud)

相反,我在构建中获得了原始目录结构的复制:

build/
    source/
        libraries/
            d3.js
            //etc
Run Code Online (Sandbox Code Playgroud)

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

jak*_*lla 21

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

无论如何,如果你可以使用cwd它,它看起来像这样:

copy: {
  main: {
    files: [
      {
        src: ["*.js"],
        dest: "build/",
        cwd: "source/libraries/"
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

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

copy: {
  main: {
    files: [
      {
        src: ["source/libraries/**/*.js"],
        dest: "build/",
        flatten: true,
        expand: true
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 您是否尝试添加`expand`选项?每当我看到`flatten`时,我都会看到`expand`. (4认同)
  • 嘿......刚读完文档......就在你提到的那条线上面就是:"`expand`设置为`true`以启用以下选项:"(`flatten`是"以下选项"之一).;) (4认同)