由于ignore
可以采用 regex,因此传递ignore
Ruby regex而不是带有文件名 glob//
的字符串。""
在正则表达式中,使用负前瞻 (?!)
和字符串结尾锚 $
来检查文件名是否以“.css”结尾。
ignore /^ css\/inuit\.css\/ (?: [^.]+ | .+ \. (?!css) \w+ ) $/ix
此正则表达式正确处理所有这些测试用例:
- 应该匹配:
css/inuit.css/abc.html
css/inuit.css/thecssthing.json
css/inuit.css/sub/in_a_folder.html
css/inuit.css/sub/crazily.named.css.json
css/inuit.css/sub/crazily.css.named.json
css/inuit.css/LICENSE
- 不应该匹配:
css/inuit.css/realcss.css
css/inuit.css/main.css
css/inuit.css/sub/in_a_folder.css
css/inuit.css/sub/crazily.css.named.css
css/inuit.css/sub/crazily.named.css.css
(?:)
非捕获组的第一个交替处理没有扩展名(没有“.”)的文件的情况。否则,第二种情况检查最后一个“。” 路径中没有“css”,这表示“.css”扩展名。
我使用该x
标志来忽略正则表达式中的空格,以便我可以在正则表达式中添加空格以使其更清晰。