<p>Sublime Text 正则替换 $1 输出字面量的根本原因是未同时满足三个硬性条件:右下角 .* 图标未点亮(正则模式未启用)、查找框中未定义捕获组(如未用括号包裹目标内容)、替换框误用 \1 或 ${1} 而非 $1;必须点亮图标、写对 (\w+) 类捕获组、且替换时严格使用 $1 才能正确展开。</p>

Sublime Text 本身不参与前端打包(Webpack/Vite 等运行在 Node.js 中),所谓“优化打包配置文件”,实际是指用 Sublime 的正则能力快速、安全地批量修改 webpack.config.js、vite.config.ts、rollup.config.mjs 等文本配置文件——不是让 Sublime 去打包,而是让它帮你改配置。
为什么直接搜 plugins: 会漏掉多行写法?
Webpack 配置里 plugins 常跨多行、带注释或嵌套对象,纯文本搜索 plugins: 只能匹配单行开头,根本抓不到 plugins: [ 换行后缩进的数组结构。
- 必须启用
.(dot matches newline),否则plugins:\s*\[([\s\S]*?)\]中的[\s\S]*?不会跨行捕获 - 用
[\s\S]*?替代.*?:前者明确包含换行符,后者默认不匹配 - 先 Find All 验证匹配范围——如果高亮块过大(吞到下一个
}),说明括号没闭合或有嵌套,得改用更保守的plugins:\s*\[([^}]+?)\]配合人工复查
resolve.alias 批量添加别名时,路径拼错的三个雷区
往 resolve.alias 对象里加 @: path.resolve(__dirname, 'src') 类似条目,看似简单,但 Sublime 正则容易踩坑:
前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。
-
path.resolve路径里的__dirname是相对当前配置文件位置的,不能盲目替换成绝对路径;正则替换前必须确认__dirname是否已存在,否则新加的别名会指向错误目录 - 别名键名含引号(
'@'vs@):查找用(['"])?(@|components|utils)\1\s*:,替换时保留原引号风格,避免 ESLint 报quote-props错误 - 末尾逗号缺失:如果
alias是对象最后一个字段,新加条目后必须补上逗号,否则 JS 语法报错;正则无法判断“是否为末字段”,需人工检查或分两步操作(先加条目,再全局搜}\s*$补逗号)
替换 mode: 'development' 时,为什么 $1 总输出成字面量?
想把所有 mode: 'development' 改成 mode: process.env.NODE_ENV || 'development',但替换后发现 $1 没展开,直接显示为字符串 $1:
立即学习“前端免费学习笔记(深入)”;
- 根本原因是右下角
.*图标没点亮——这是 Sublime 正则的硬开关,灰色=关闭,蓝色=启用,不点就等于没写正则 - 查找框里必须有捕获组:写成
mode:\s*(['"])(development|production)\1,其中(['"])和(development|production)是两个捕获组,才能用$1、$2引用 - 替换框必须用
$1,不能用\1或${1};Sublime 只稳定支持$n语法
真正难的不是写出能跑的正则,而是判断哪些地方不该用正则——比如 module.rules 里带 oneOf 或函数式 test 的规则,结构太动态,正则一碰就错;这种地方宁可手动改,或者用 AST 工具(如 jscodeshift)处理。

















