Glob 类似于 Regular Expression,主要的使用场景是用于批量的文件匹配,在 bash 或是配置文件中常常被使用。下面列举了一些常见的语法规则:
*
匹配任意多个字符(包括匹配零个)?
匹配任意一个字符[abc]
匹配方括号中的任意一个字符[!abc]
或[^abc]
匹配除了方括号中定义的三个字符外的任意字符[a-z]
匹配方括号定义范围内的任意一个字符[!a-z]
或[^a-z]
匹配除了方括号定义范围内的任意一个字符{ab,cd,ef}
匹配花括号中定义的三个字符串中的任意一个
举个例子,如果 Jest 的单元测试文件命名规范的正则表达式是:.+\.(?:test|spec)\.[tj]sx?$
,也就是匹配下面的这些文件:
- a.test.js
- b.test.jsx
- c.test.ts
- d.test.tsx
- e.spec.js
- f.spec.jsx
- g.spec.ts
- h.spec.tsx
那么,相应的 Glob 可以写:*.{test,spec}.{js,jsx,ts,tsx}
。
如果不涉及到 React 的代码(没有 jsx),可以写成:*.{test,spec}.[tj]s
。
参考文档: