我有以下Gruntfile:
module.exports = function(grunt) {
//Project configuration.
grunt.initConfig({
copy: {
main: {
files: [
{
expand: true,
cwd: "source/",
src: ["!**/*.less", "**"],
dest: "compiled/"
},
],
},
},
});
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.registerTask("default", ["copy"]);
};
我的目标是将其从source
文件夹复制到compiled
文件夹。例如,如果在运行Grunt之前这是我的文件结构...
[root]
- Gruntfile.js
- source
\- test.txt
\- sample.html
\- file.less
- compiled
......我期待着......
[root]
- Gruntfile.js
- source
\- test.txt
\- sample.html
\- file.less
- compiled
\- test.txt
\- sample.html
...但我得到了:
[root]
- Gruntfile.js
- source
\- test.txt
\- sample.html
\- file.less
- compiled
\- test.txt
\- sample.html
\- file.less
我认为将源设置为["!**/*.less", "**"]
可以解决这个问题,但事实并非如此。为什么这不起作用(实际上是什么目标)以及如何解决这个问题?
答案 0 :(得分:1)
在匹配模式之后应该放置否定模式,因为它们否定了之前的匹配:
copy: {
main: {
files: [
{
expand: true,
cwd: "source/",
src: ["**", "!**/*.less"],
dest: "compiled/"
},
],
},
}
有关示例,请参阅globbing patterns docs,例如:
// All files in alpha order, but with bar.js at the end.
{src: ['foo/*.js', '!foo/bar.js', 'foo/bar.js'], dest: ...}
在你的否定模式之后放置"**"
,你就会覆盖它。