告别手写正则删注释:为什么strip-json-comments才是处理JSONC的唯一正确选择
2026/8/25 10:41:27 网站建设 项目流程

告别手写正则删注释:为什么strip-json-comments才是处理JSONC的唯一正确选择

【免费下载链接】strip-json-commentsStrip comments from JSON. Lets you use comments in your JSON files!项目地址: https://gitcode.com/gh_mirrors/st/strip-json-comments

strip-json-comments是一个轻量级 Node.js 开源工具:只要一行代码,就能把 JSON 字符串里的//单行注释和/* */多行注释干净移除,让你的JSONC(带注释的 JSON)配置可以被JSON.parse正常解析。对于被.vscode/settings.jsontsconfig.json这类"带注释配置"折磨过的新手来说,它是绕不开的一个依赖。

为什么 JSON 里不能直接写注释?

JSON 规范不允许注释。你在配置文件里随手写一句// 这是主题色JSON.parse立刻抛出SyntaxError

于是大家习惯手写一条正则"救急":

const clean = raw.replace(/\/\/.*$/gm, '');

听起来很爽,但这类正则删注释方案有三个经典翻车现场:

  • 💥误伤字符串"homepage": "https://example.com"里的//也会被删掉,数据直接损坏;
  • 💥多行注释无力/* ... */跨越多行时,单行正则根本接不住;
  • 💥位置漂移:删掉字符后行号错乱,报错时你完全找不到问题出在第几行。

strip-json-comments 存在的意义,就是让你彻底告别这种"手搓正则"的冒险。

三步安装并使用 JSON 注释剥离工具

⚡ 它零依赖、支持 Node.js ≥ 14.16,并且自带 TypeScript 类型定义,安装即用:

npm install strip-json-comments
import stripJsonComments from 'strip-json-comments'; import { readFileSync } from 'node:fs'; const raw = readFileSync('settings.jsonc', 'utf8'); const data = JSON.parse(stripJsonComments(raw));

三步完成:装包 → 读文件 → 剥注释后解析。仓库根目录的 示例数据 就是现成的练手素材:里面混着//行注释和多行块注释,剥完之后可以直接丢给JSON.parse

两个选项:让 JSONC 配置更宽容

调用时可以传入第二个参数,两个选项都很实用:

选项默认值作用
trailingCommasfalse顺便移除尾逗号("a": 1,这种),对 JSONC 极其友好
whitespacetrue把注释替换成空白而不是直接删掉

第二个选项藏着作者的一点小心机 ✅ 替换成空白后,处理前后行号和列号几乎一一对应。也就是说:如果解析后还报错了,错误信息指向的行号依然能直接定位到原始文件,调试体验大大提升。

JSON.parse(stripJsonComments(raw, { trailingCommas: true }));

为什么它比手写正则可靠?

核心逻辑全部在不到 120 行的 主程序文件 里,用一个状态机逐字符扫描,专门处理了正则难以覆盖的边界情况:

  • 🔒字符串内保护:值里的///* */一律不碰(包括https://这种 URL);
  • 🔒转义引号识别:字符串里出现\"也不会误判字符串边界;
  • 🔒换行符兼容:Windows 的\r\n和 Unix 的\n都能正确处理;
  • 🔒文件末尾注释:EOF 处戛然而止的单行注释也不会出问题。

这些场景在 测试文件 里都有对应用例覆盖,跑一遍npm test就能看到全绿的边界测试。

更硬核的是性能:仓库附带 基准脚本,用超过 2.7 万行的泰坦尼克号乘客数据集 大样例文件 做压力对比,处理几十万行带注释的 JSONC 也毫无压力。

适合哪些实际场景?

  • 🛠️ 在脚本里读取 VS Code 的settings.jsontsconfig.json等 JSONC 配置文件;
  • 🛠️ 处理团队内部"约定俗成带注释"的 JSON 数据文件;
  • 🛠️ 配合 Gulp / Grunt / Broccoli 构建流程,在打包前批量清洗注释(均有对应插件)。

想深入看看源码?克隆仓库即可,核心就一个文件,新手也能十分钟读完:

git clone https://gitcode.com/gh_mirrors/st/strip-json-comments

小结

手写正则删注释是"能用但危险"的捷径;而strip-json-comments用极小的代码量,换来了字符串保护、错误位置对齐、尾逗号清洗这些开箱即用的能力。处理JSONC剥离 JSON 注释这件事,交给它,就对了。

【免费下载链接】strip-json-commentsStrip comments from JSON. Lets you use comments in your JSON files!项目地址: https://gitcode.com/gh_mirrors/st/strip-json-comments

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询