linter-jsonlint需与linter及linter-ui-default共存才生效,依赖系统jsonlint cli,仅报告错误不自动修复;须确保文件grammar为source.json且路径配置正确。

linter-jsonlint 装了没反应?先确认它根本不是独立插件
linter-jsonlint 不是开箱即用的“一键校验”插件,它只是 linter 框架的一个 provider,必须和 linter(作者 steelbrain)与 linter-ui-default 同时存在才能显示波浪线、悬停提示和错误列表。缺任何一个,Atom 就当 JSON 文件是纯文本——连语法高亮都可能不触发。
常见静默失效场景:
- 只装了
linter-jsonlint,但没装linter核心包 → 控制台报Failed to provide linter services,设置页里找不到配置项 - 装了
linter和linter-jsonlint,但没装linter-ui-default→ 保存后控制台可能有日志,但编辑器里零提示、底部状态栏始终显示0 problems - 装全了却仍无反应 → 右下角查看文件 grammar 是否为
JSON;如果是Plain Text或JavaScript,手动点击切换
JSON 格式校验依赖 jsonlint CLI,不是插件自带
linter-jsonlint 本身不解析 JSON,它调用系统里的 jsonlint 命令行工具。如果终端里运行 jsonlint --version 报错或找不到命令,插件就直接跳过检查,不会报错,只会沉默。
安装方式(推荐本地项目级,避免环境 PATH 问题):
- 在项目根目录执行:
npm install jsonlint --save-dev - 然后进 Atom 设置 → Packages →
linter-jsonlint→ Settings,把Executable Path改成:node_modules/.bin/jsonlint(注意:不是全局路径) - Mac 用户若用 nvm 管理 Node,从桌面图标启动 Atom 会导致 PATH 丢失
jsonlint;改用终端运行:atom --new-window .
复杂 JSON(含注释、多行字符串、尾逗号)校验失败怎么办?
标准 JSON 不允许注释、尾逗号、单引号或未转义换行符,但开发中常遇到这类“类 JSON”数据(如配置文件、mock 数据)。jsonlint 默认严格校验,会直接报错。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
解决方法取决于你的真实需求:
- 想让它“宽容”一点 → 改用
jsonc(JSON with Comments)模式:安装jsoncCLI(npm install jsonc-cli --save-dev),再把linter-jsonlint的Executable Path指向node_modules/.bin/jsonc,并勾选Allow comments选项 - 想保留严格性但跳过特定文件 → 在
linter-jsonlint设置页填Files to ignore,例如:**/package.json、**/tsconfig.json(这些文件本就不该被 jsonlint 处理) - 遇到超大 JSON(>5MB)卡顿 → 插件默认不限制大小,但
jsonlint解析慢;可在 Atom 设置 → Core →Exclude VCS Ignored Paths勾选,避免扫描node_modules下的 JSON
为什么标红了点不了、悬停没内容?检查 scope 过滤和 grammar 绑定
波浪线出现但交互失效,90% 是因为 linter-jsonlint 没真正接管当前文件。它只响应 scope 为 source.json 的文件,而 Atom 对某些后缀(如 .config.json、.data)可能识别为其他 grammar。
排查步骤:
- 打开一个疑似有问题的 JSON 文件,按
Cmd+Shift+P(Mac)或Ctrl+Shift+P(Win/Linux),输入Grammar: Show Grammar,确认显示的是JSON - 进
linter-jsonlint设置页,检查是否误启了Only lint files matching these scopes;若已勾选,清空输入框,或明确填入source.json - 如果文件后缀不是
.json(比如.schema),需手动绑定 grammar:右下角点击当前 grammar →Open Your Stylesheet→ 在styles.less末尾加:.platform-darwin .tree-view .file.icon[data-name$=".schema"] { .icon-json(); }(仅 Mac 示例)
最易被忽略的一点:linter-jsonlint 不支持自动修复(fix on save),它只报告语法错误。如果你需要格式化(比如缩进、换行、引号统一),得额外装 atom-beautify 或 prettier-atom,但注意别让它们和 jsonlint 的规则冲突——比如一个强制双引号、一个允许单引号,结果就是反复改来改去。










