完全复制排除文件夹(不仅仅是内容)

Grunt copy exclude folder entirely (not just contents)

[编辑:已解决,请参阅下面的答案]

我想要 运行 一项 任务,它将除一个文件夹外的所有内容从一个目录(源目录)复制到另一个位置(分发目录)。换句话说,给定结构:

src
 丨- images
     丨- favicons/
         丨- files.jpg
     丨- other folders/
     丨- individual_file.png

我想移动 "images" 但没有 "favicons",生成以下内容:

dist
 丨- images
     丨- other folders/
     丨- individual_file.png

然而,我得到的是:

dist
 丨- images
     丨- favicons (empty)
     丨- other folders/
     丨- individual_file.png

我在 SO 上查看了以下问题:

grunt (minimatch/glob) folder exclusion

grunt-contrib-copy - ignore folder when copying

Configure grunt copy task to exclude files/folders

但是我的语法有问题。我使用了各种 globbing 模式,我所取得的最接近的成功(适用于任意数量的不同 globbing 模式)是在目标位置创建文件夹,但其中没有任何文件。

以下是我认为与 this answer 中接受的答案大致相同的内容:

imageDist: {
  expand: true,
  cwd: 'src/images/',
  src: ['**/*', '!**/favicons/**'],
  dest: 'dist/images/'
}

但它会产生一个空的 "favicons" 目录。

这是我尝试过的许多模式中的至少一种,它也会导致一个空的 "favicons" 目录。这对我来说最有意义,因为我说 "copy everything" 然后 "except favicons"。我不需要为排除匹配匹配 globbing,因为我知道我有一个名为 favicons 的目录。我还在以下内容中尝试了前导斜杠和尾随斜杠(不带通配符)的组合:

imageDist: {
  expand: true,
  cwd: 'src/images/',
  src: ['*', '!favicons'],
  dest: 'dist/images/'
}

我不明白。我注意到我也在复制我的 CVS 文件夹,并且在原型制作期间我没有使用我的模板……所以我添加了 CVS 排除和模板部分。这只是在期待其他人知道我的小费。就像变魔术一样,favicon 文件夹也开始被排除在外。工作的与建议的几乎相同:

imageDist: {
  expand: true,
  cwd: 'src/images/',
  src: ['**/*', '!**/CVS/**', '!**/favicons/**'],
  dest: '<%= dirs.dist %>/images/'
}

我从最初的问题恢复到普通问题,以检查是否正常:

imageDist: {
  expand: true,
  cwd: 'src/images/',
  src: ['**/*', '!**/favicons/**'],
  dest: 'dist/images/'
}

...而且它似乎也有效。

我只能想象我打错了字。我的意思是,我从我的 Gruntfile(我测试失败的地方)直接复制并粘贴到我的问题中。但是不知怎么的……不知怎么的……一定是打错了,现在已经不存在了。

为了后代,我会把这个 question/answer 留在这里,但是是的。现在看来可以正常使用了。