micromatch 
什么是micromatch? 
micromatch 是一个用于匹配文件路径的 npm 包,它提供了强大的通配符匹配功能,可以用于在 JavaScript 或 Node.js 环境中进行文件路径匹配。
作用
- 文件路径匹配:micromatch 可以根据指定的通配符模式,对文件路径进行匹配,用于筛选出符合条件的文件路径。
- 支持多种通配符:它支持多种通配符,包括 *(匹配任意数量的字符)、?(匹配单个字符)、[...](匹配字符集合)等,使得匹配更加灵活和精确。
- 可用于构建构建工具和任务:micromatch 可以被用于构建各种构建工具、任务和文件操作相关的功能,例如文件查找、文件筛选、路径转换等。
原理
- 基于正则表达式:micromatch 的匹配原理基于正则表达式,它会将通配符模式转换为对应的正则表达式,然后使用这些正则表达式来匹配文件路径。
- 路径分割和匹配:在匹配过程中,micromatch 会将文件路径分割成各个部分(目录、文件名等),然后根据通配符模式对这些部分进行匹配。
- 支持多种选项:micromatch 提供了丰富的选项和配置,可以控制匹配的行为,例如是否区分大小写、是否匹配隐藏文件、是否启用扩展名匹配等。
总的来说,micromatch 通过将通配符模式转换为正则表达式,并对文件路径进行分割和匹配,实现了强大的文件路径匹配功能。它在构建工具、任务和文件操作相关的场景中有着广泛的应用。
案例 && api说明 
| API | API说明 | Demo和输出 | 
|---|---|---|
| match | 对给定的字符串数组进行匹配,返回匹配成功的字符串数组。 |  micromatch.match(['foo.js', 'bar.js'], '*.js'); // ['foo.js', 'bar.js'] | 
| matcher | 返回一个函数,用于对字符串进行匹配。 |  const isMatch = micromatch.matcher('*.js'); isMatch('foo.js'); // true | 
| isMatch | 用于检查指定的字符串是否与给定的通配符模式匹配。 |  micromatch.isMatch('foo.js', '*.js'); // true | 
| any | 检查指定的字符串是否与给定的任何一个通配符模式匹配。 |  micromatch.any('foo.js', ['*.js', '*.json']); // true | 
| not | 返回一个函数,用于对字符串进行排除匹配。 |  const notJs = micromatch.not('*.js'); notJs('foo.js'); // false | 
| contains | 检查指定的字符串是否包含任何通配符模式匹配的部分。 |  micromatch.contains('aa-bb-cc', '*-bb-*'); // true | 
| matchKeys | 返回一个函数,用于对对象的键进行匹配。 |  const isMatch = micromatch.matchKeys({ 'a.js': 'a', 'b.js': 'b' }, '*.js'); // { 'a.js': 'a', 'b.js': 'b' } | 
| some | 检查指定的字符串是否与给定的任何一个通配符模式匹配。 |  micromatch.some('foo.js', ['*.js', '*.json']); // true | 
| every | 检查指定的字符串是否与给定的所有通配符模式匹配。 |  micromatch.every('foo.js', ['*.js', '*.json']); // false | 
| all | 检查指定的字符串是否与给定的所有通配符模式匹配。 |  micromatch.all('foo.js', ['*.js', '*.json']); // false | 
| capture | 用于提取字符串中与通配符模式匹配的部分。 |  micromatch.capture('test.js', 't[a-z]*.js'); // ['test.js', 'test'] | 
| makeRe | 用于将通配符模式转换为对应的正则表达式。 |  micromatch.makeRe('*.js'); // /^.*\.js$/ | 
| scan | 用于在字符串中扫描匹配的部分。 |  micromatch.scan('a-b-c', '*-b-*'); // ['a-b-c', 'a', 'c'] | 
| parse | 用于解析通配符模式,返回一个对象表示该模式的结构。 |  micromatch.parse('*.js'); // { isBrace: false, isExtglob: false, ... } | 
| braces | 用于展开大括号表达式。 |  micromatch.braces('a/{b,c}/d', { expand: true }); // ['a/b/d', 'a/c/d'] | 
| braceExpand | 用于展开大括号表达式。 |  micromatch.braceExpand('a/{b,c}/d'); // ['a/b/d', 'a/c/d'] | 
            |
