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

时间:2015-07-23 17:33:27

标签: gruntjs grunt-contrib-copy

[编辑:解决,见下面的答案]

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

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

我想移动"图像"但没有" 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

但是我的语法出错了。我已经使用了各种各样的通配模式,我最近的成功(可以使用任意数量的不同的通配模式)是在目的地创建文件夹但没有任何文件。

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

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

但它导致了一个空的" favicons" 。目录

这里至少有一个我试过的模式中的一个,这也导致了一个空的" favicons"目录。这个对我来说最有意义,因为我说"复制一切"然后"除了favicons"。我不需要用于排除匹配的通配,因为我知道我有一个名为favicons的目录。我还尝试了以下的前导和尾部斜杠(没有通配符)的组合:

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

1 个答案:

答案 0 :(得分: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(我测试失败的地方)复制并粘贴到我的问题中。但不知何故......不知怎的......一定有一个错字不再存在。

我会在这里为后人保留这个问题/答案,但是,是的。现在似乎工作正常。