如何解决{}和+之间的全局模式差异
我引用了https://facelessuser.github.io/wcmatch/glob/,并说了
+(pattern_list):如果pattern_list中的任何一个或多个模式匹配输入字符串,则该模式匹配。 需要EXTGLOB标志。
{}:Bash样式括号扩展。这适用于之前的模式 还要别的吗。需要BRACE标志。
我可以看到每个描述都不相同,但实际示例很难理解。
例如,下面的两个有什么区别?
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx,json,css}": [
"prettier --write","eslint --fix src/","tslint --fix --project .","git add"
]
},"lint-staged": {
"src/**/*.+(js|jsx|ts|tsx|json|css)": [
"prettier --write",
任何建议将不胜感激!
解决方法
{}
实现了与Bash大括号扩展类似的功能。本质上src/**/*.{js,jsx,ts,tsx,json,css}
将变为:
[
'src/**/*.js','src/**/*.jsx','src/**/*.ts','src/**/*.tsx','src/**/*.json','src/**/*.css'
]
有一个时间和地点,但是您可能会发现这样做效率较低,因为您现在正在处理多个模式。
您可以更像正则表达式来思考+()
,其中+(js|jsx|ts|tsx|json|css)
会更等效于(js|jsx|ts|tsx|json|css)+
。
因此它可以匹配js
或jsjsxtxjson
之类的东西,但实际上并不等同于{}
。
如果想与{}
进行更有效的比较,您可能感兴趣的是@(js|jsx|ts|tsx|json|css)
,它等效于像(js|jsx|ts|tsx|json|css)
这样的正则表达式模式,该模式只匹配一个且匹配js
但不匹配jsjsxtxjson
。之所以更有效,是因为您得到的是单一模式而不是多个模式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。