2014-10-18 40 views
0

我有以下Gruntfile:如何使grunt-contrib-copy不復制LESS文件?

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文件夾。例如,如果這是在運行之前咕嚕我的文件結構...

[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

'!'否定以前的模式,所以把它放在匹配的模式之後。 – steveax 2014-10-18 23:46:13

+0

@steveax像這樣?:'src:[「**/*。less!」,「**」]'或者你的意思是這樣嗎?:'src:[「**」,「!**/* .LESS「]' – 2014-10-18 23:49:23

回答

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: ...} 

通過您的否定模式之後將"**" ,你壓倒了它。