gpt4 book ai didi

javascript - grunt (minimatch/glob) 文件夹排除

转载 作者:IT老高 更新时间:2023-10-28 21:49:45 25 4
gpt4 key购买 nike

我有一种情况,我正在尝试使用 grunt 对代码库进行 lint,不包括特定文件夹。

grunt 在后台使用 minimatch(类似于 bsdglob)来匹配文件,但我似乎无法弄清楚如何对文件夹进行 .gitignore 样式的排除。

我想摄取这个:

忽略

并匹配这些:

/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 中可以排除文件夹,我仍然会感兴趣。

最佳答案

在当前正在开发的 0.4.0a 版本中,grunt.file.expand 方法现在支持排除,并且可以说比底层 minimatch 匹配库更简单。这是可能的,因为 grunt.file.expand 接受 multiple 模式(而 minimatch 只接受一个)。

来自 the grunt.file.expand documentation :

This method accepts either comma separated wildcard patterns or an array of wildcard patterns. Paths matching patterns that begin with ! will be excluded from the returned array. Patterns are processed in order, so inclusion and exclusion order is significant.

这意味着您可以指定 ['/**/*.js', '!**/ignoreme/**'] 而第一个模式将添加所有 .js 文件添加到结果集中,然后第二个模式将从结果集中删除所有 /ignoreme/ 文件。

看看grunt.file.match unit tests如果你真的很好奇。

请注意,提供此功能的 grunt 版本尚未正式发布,但如果您有兴趣在项目中使用它,请参阅 When will I be able to use in-development feature 'X'?常见问题解答条目。

关于javascript - grunt (minimatch/glob) 文件夹排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12632029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com