当前位置: 首页 > news >正文

minimatch 详解:功能、语法与应用场景

一、minimatch 是什么?

minimatch 是一种用于字符串模式匹配的工具库,核心功能是通过简化的正则表达式语法来匹配文件路径或字符串。它广泛应用于前端构建工具(如 Webpack、Gulp)、包管理器(如 npm)以及文件系统操作中,用于高效筛选文件。

  • 工作原理是将 glob 表达式转换为 JavaScriptRegExp 对象。

二、核心语法:通配符与匹配规则

  1. 基础通配符
*:匹配任意数量(包括零个)的任意字符(不包括路径分隔符 /)例:*.js 匹配 index.js、utils.js,但不匹配 src/app.js
?:匹配单个任意字符例:file?.txt 匹配 file1.txt、fileA.txt,不匹配 file.txt
[]:匹配括号内的任意单个字符例:[abc].js 匹配 a.js、b.js,[0-9].txt 匹配数字结尾的文件
!:在括号内表示取反匹配例:[!abc].js 匹配非 a、b、c 开头的 .js 文件
  1. 路径匹配
/:明确路径分隔符,支持递归匹配例:src/**/*.js 匹配 src 目录下所有层级的 .js 文件
**:匹配任意层级的目录(包括空目录)例:**/config.json 匹配根目录或任意子目录下的 config.json
  1. 特殊符号
{}:匹配多个模式中的任意一个(类似正则表达式的 |)
例:{js,css} 匹配 js 或 css,img/{png,jpg} 匹配 img/png 或 img/jpg
!:前缀表示排除匹配(需搭配数组使用)
例:['src/*.js', '!src/test.js'] 匹配 src 下除 test.js 外的所有 .js 文件
+(pattern):扩展 glob 语法,表示匹配一个或多个指定模式

三、典型应用场景

  1. 文件路径匹配
  • React项目.eslintrc.js 文件配置示例
module.exports = {plugins: ['import'],rules: {'import/order': ['error',{// 定义特定模式的分组和位置pathGroups: [{// 匹配 react 相关的 import, 提取到external分组最前pattern: 'react',group: 'external',position: 'before',},{// 把@features下的文件归为internal,注意这里必须是两个**,才可以表示多级目录pattern: '@features/**',group: 'internal',},{// 匹配样式文件的 importpattern: '*.{css,scss,less}',group: 'unknown',patternOptions: { matchBase: true },position: 'after',},],],},
};

四、与正则表达式的区别

  • minimatch(通配符):路径匹配 原生支持 / 分隔符和层级
  • 正则表达式: 路径匹配 需手动处理路径分隔符
http://www.xdnf.cn/news/894889.html

相关文章:

  • ResolverActivity 优先级
  • 竞品分析六大步骤
  • 如何防止看板任务长期停滞不前
  • 【xshell】已经安装对应版本xftp,xshell中点击xftp快捷按钮,提示“使用此功能需要Xftp。单击下载按钮,转到Xftp下载页”
  • 如何在运动中保护好半月板?
  • 插入排序,二分查找,字符数组 day8
  • linux C语言中的动态库 静态库说明
  • 智慧停车设备选型指南:何时应优先考虑免布线视频桩方案?
  • QT中使用libcurl库实现到ftp服务器的上传和下载
  • Debugger encountered an exception:Exception at 0x7ff809232bdc
  • 【6.2-6.9学习周报】
  • [免费]SpringBoot+Vue鲜花销售商城系统【论文+源码+SQL脚本】
  • Spring Boot统一功能处理深度解析
  • 如何设置合适的缓存过期时间(TTL)?是否有必要实现缓存预热?
  • 【PmHub面试篇】PmHub集成Redission分布式锁保障流程状态更新面试专题解析
  • 【inode使用 100%,导致项目异常】
  • 【学习分享】shell基础-参数传递
  • 使用反射对任意对象进行二进制序列化的程序
  • 行内样式:深入解析与应用指南
  • Vue.js应用结合Redis数据库:实践与优化
  • 更改安卓虚拟机屏幕大小
  • ICLR文章如何寻找页码
  • 【高频面试题】快慢指针及相关应用
  • 客户体验数据使用的三种视角——场景视角
  • 等比数列的概念及性质02
  • 沉金电路板工艺解析:从原理到应用的全面指南
  • 2025年06月05日Github流行趋势
  • RK3588 InsightFace人脸识别移植及精度测试全解析
  • 对象数组练习(增删改查)
  • Spring AI(10)——STUDIO传输的MCP服务端