0

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

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

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

我想移动“图像”但没有“图标”,产生以下内容:

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

但是,我得到的是:

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

我已经查看了关于 SO 的以下问题:

grunt (minimatch/glob) 文件夹排除

grunt-contrib-copy - 复制时忽略文件夹

配置 grunt 复制任务以排除文件/文件夹

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

这是我认为与此答案中接受的答案或多或少相同的内容:

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

但它会导致一个空的“favicons”目录。

这是我尝试过的许多模式中的至少一种,它也导致了一个空的“favicons”目录。这对我来说最有意义,因为我说的是“复制所有内容”,然后是“除了网站图标”。我不需要为排除匹配使用通配符,因为我知道我有一个名为 favicons 的目录。我还尝试了以下前导斜杠和尾随斜杠(不带通配符)的组合:

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

1 回答 1

0

我不明白。我注意到我也在复制我的 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(我测试失败的地方)直接复制并粘贴到我的问题中。但不知何故……不知何故……一定有一个不再存在的错字。

我将把这个问题/答案保留在这里以供后代使用,但是是的。现在似乎工作正常。

于 2015-07-23T18:10:39.640 回答