Options
All
  • Public
  • Public/Protected
  • All
Menu

External module "matcher"

Index

Classes

Type aliases

Functions

Type aliases

Pattern

Pattern: string | RegExp | test | Matcher | (string | RegExp | test | Matcher)[]

表示一个匹配模式,可以是通配符、正则表达式、自定义函数、匹配器或以上模式组成的数组

description
通配符

在通配符中可以使用以下特殊字符:

  • ?: 匹配固定一个字符,但 / 和文件名开头的 . 除外
  • *: 匹配任意个字符,但 / 和文件名开头的 . 除外
  • **: 匹配任意个字符,但文件名开头的 . 除外
  • [abc]: 匹配方括号中的任一个字符
  • [a-z]: 匹配 a 到 z 的任一个字符
  • [!abc]: 匹配方括号中的任一个字符以外的字符
  • {abc,xyz}: 匹配大括号中的任一种模式
  • \: 表示转义字符,如 \[ 表示 [ 按普通字符处理
  • !xyz:如果通配符以 ! 开头,表示排除匹配的项,注意如果排除了父文件夹,出于性能考虑,无法重新包含其中的子文件

*** 的区别在于 ** 可以匹配任意级文件夹,而 * 只能匹配一级, 但如果通配符中没有 /(末尾的除外),则通配符只需匹配文件名部分

通配符\路径 foo.js dir/foo.js dir/sub/foo.js
*.js 匹配 匹配 匹配
./*.js 匹配 不匹配 不匹配
dir/*.js 不匹配 匹配 不匹配
dir/**.js 不匹配 匹配 匹配
dir/*‌/foo.js 不匹配 不匹配 匹配
dir/**‌/foo.js 不匹配 匹配 匹配

***? 不匹配以 . 开头的文件名,要允许匹配,应写成 {.,}*

通配符 路径 结果
* .js 不匹配
.* .js 匹配
x*y x.y 匹配
* .git/config 匹配
*‌‌/ .git/config 不匹配

如果通配符以 / 结尾,表示匹配文件夹;如果匹配了文件夹,等价于匹配内部的所有子文件

默认地,通配符只负责逐字匹配,所以 ./../ 等符号不会被特殊处理(除了开头的 ./

如果设置了 baseDir,则通配符只匹配绝对路径:

  1. 支持前缀 ../
  2. Windows 下改用 \ 作为分隔符
  3. 如果通配符也是绝对路径,则 []{}\(仅 Windows)作普通字符匹配
正则表达式

正则表达式的源是一个固定以 / 为分隔符的相对路径

自定义函数

函数接收原始路径为参数,如果函数返回 true 表示匹配该路径,如:

function match(path) {
    return path.endsWith(".js")
}
匹配器

可以从现成匹配器复制新的匹配器

数组

可以将以上模式自由组合成数组,只要匹配数组中任一个模式,就认定匹配当前模式

Functions

isGlob

  • isGlob(pattern: string): boolean
  • 判断指定的模式是否是通配符

    Parameters

    • pattern: string

      要判断的模式

    Returns boolean

match

  • match(path: string, pattern: Pattern, baseDir?: string, ignoreCase?: boolean): boolean
  • 测试指定的路径是否匹配指定的模式

    Parameters

    • path: string

      要测试的路径

    • pattern: Pattern

      要测试的匹配模式

    • Optional baseDir: string

      如果需要匹配绝对路径,则设置匹配的根绝对路径

    • Optional ignoreCase: boolean

      是否忽略路径的大小写

    Returns boolean

Generated using TypeDoc