我有这样一个情况,我正在尝试使用grunt来对代码库进行lint,但要排除特定的文件夹。
grunt在底层使用minimatch(类似于bsdglob)来匹配文件,但我似乎无法弄清如何使用.gitignore样式来排除文件夹。
我想要使用以下内容:
grunt在底层使用minimatch(类似于bsdglob)来匹配文件,但我似乎无法弄清如何使用.gitignore样式来排除文件夹。
我想要使用以下内容:
ignoreme
并匹配以下内容:/folder/path/here/to/something/ok.js
/another/folder/path.js
/test.js
但不匹配这些:
/folder/ignoreme/something.js
/folder/path/here/to/ignoreme/metoo/file.js
这将匹配所有内容,包括 ignoreme:
/**/*.js
所以我想我可以做这样的事情:
/**/!(ignoreme)/**/*.js
但是这个匹配也会匹配 ignoreme 文件夹中的文件。
我很熟悉正则表达式,但似乎无法想出如何在这里重复一个模式或其他操作 - 我还尝试过像这样的东西:
/(!(ignoreme)|*)*/*.js
希望容器能够重复,但不起作用,它只是无法匹配任何内容。
有没有办法将正则表达式传递到Grunt文件路径中,或者让这对我起作用?
更新:
这是我目前处理此问题的方式:
var pattern = /\/ignoreme\//
var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){
return !pattern.test(f)
})
如果 minimatch 支持文件夹排除,我仍然很感兴趣。
map
会导致files
包含一个由TRUE
和FALSE
值组成的数组。filter
将正确地将files
设置为经过筛选的路径列表。 - deefour