完全复制排除文件夹(不仅仅是内容)
Grunt copy exclude folder entirely (not just contents)
[编辑:已解决,请参阅下面的答案]
我想要 运行 一项 grunt-contrib-copy 任务,它将除一个文件夹外的所有内容从一个目录(源目录)复制到另一个位置(分发目录)。换句话说,给定结构:
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 留在这里,但是是的。现在看来可以正常使用了。
[编辑:已解决,请参阅下面的答案]
我想要 运行 一项 grunt-contrib-copy 任务,它将除一个文件夹外的所有内容从一个目录(源目录)复制到另一个位置(分发目录)。换句话说,给定结构:
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 留在这里,但是是的。现在看来可以正常使用了。