@cldmv/eslint-plugin-jsonv (英语)
用于验证的 ESLint 插件 .jsonv 使用 翻译: par.
曰如何是新来
最近:v1.1.2(2026年11月)
- 工具发布, 无插件更改 现在使用的 vitest 配置
devCondition()从@cldmv/configs,所以测试真的 逆src/通过eslint-plugin-jsonv-dev导出条件,并且类型脚本被拆分为types:check财务报告和审定财务报表types:build(单位:千美元)92号, (中文(简体) ), 94号) (中文(简体) ). 规则、语言或选项不变. - 查看全文 v1.1.2 更改日志
最近发布的
- v1.1.1 数据 (2026年11月 - ) (中文(简体) )
engines.node返回运行时间范围^20.19.0 || ^22.13.0 || >=24;22.22.0开发层迁至devEngines(单位:千美元)88号(中文(简体) )更改日志(中文(简体) ) - 页:1 (2026年11月) — 插件已搬入
src/,用tsup, 和一个require()条目和一个eslint-plugin-jsonv-dev出口条件;engines.node缩小到>=22.22.0(#82,#83) (中文(简体) )更改日志(中文(简体) ) - 页:1 (2026年10月)——仅发展依赖:
eslint10.120.0, vitest 5.0.3 和@cldmv/vitest-runner1.5.3;没有更改插件代码(#59,#60,#62,#64)(更改日志(中文(简体) ) - 页:1 (2026年10月) — 标题工具
@cldmv/fix-headers2.2.0和2@cldmv/configs1.2.4; 没有更改插件代码或运行时间依赖性(# 54, #57)(更改日志(中文(简体) )
📚 完整版本历史参见 文件/更改日志/ 编辑 GitHub 发布。 。 。 .
特征
- 语法验证: 使用 jsonv 解析器验证 jsonv 语法
- ES2011-2025 支助:所有JSON5,ES2015,ES2020,ES2021特性支持
- 内部参考文献: 验证赤裸的标识符、模板插入、嵌入式属性访问
- BigInt 支持: 验证 BigInt 文字和数字分隔符
- 准确错误报告: 分析错误包括行/列信息
- 可配置解析:目标ES年,解析模式,严格BigInt和八进制检查,内部参考解析
安装
npm install --save-dev @cldmv/eslint-plugin-jsonv
所需经费: 节点 ^20.19.0 || ^22.13.0 || >=24 (插件的范围) @eslint/core 财务报告和审定财务报表 @eslint/plugin-kit 依赖性支持)和ESLint ^9.13.0 || ^10.0.0 (第一次ESLint发布与 defaultLanguageOptions 支持插件 languages) (中文(简体) ). require() 需要该范围已经覆盖的 ^20.19.0 或 ^22.13.0 节点.
开发这个软件包需要节点22.22.0或以后(devEngines) (中文(简体) ).
说明: 此插件需要 @cldmv/jsonv 作为同伴的依赖.
npm install @cldmv/jsonv
构建插件
源头住在 src/数字 : src/index.mjs 是插件,并且 src/index.cjs 是普通JS条目。 为了建造它:
npm install
npm run build
这将:
- 套装
src/index.mjs输入dist/index.mjs带有 tsup - 复制
src/index.cjs不变dist/index.cjs - 生成类型定义为
dist/index.d.mts
dist/ 未犯; npm pack 财务报告和审定财务报表 npm publish 重建这个系统.
从源头运行
包裹 "." 导出有 eslint-plugin-jsonv-dev 标注在 src/ 改为 dist/在一次离职中, import 或者说 require 联 合 国 @cldmv/eslint-plugin-jsonv 负载 dist/ 除非设定条件:
node --conditions=eslint-plugin-jsonv-dev app.mjs
# or once per shell
export NODE_OPTIONS=--conditions=eslint-plugin-jsonv-dev
测试套房设置条件本身,所以 npm test 运行与 src/,则 npm run test:dist 建造和检查 dist/。 。 。 .
使用量
ESLint平面配置 (eslint.config.mjs) (英语)
import jsonv from "@cldmv/eslint-plugin-jsonv";
export default [
{
files: ["**/*.jsonv"],
plugins: { jsonv },
language: "jsonv/jsonv",
extends: ["jsonv/recommended"]
}
];
ESLint平面配置(eslint.config.cjs) 互联网档案馆的存檔,存档日期2011-12-21
软件包也有一个通用JS条目,所以一个通用JS配置可以 require() 这个. require() 返回插件对象本身,与无害环境管理默认导出对象相同。 这需要一个节点js释放与 require(esm) 支持(^20.19.0或QQ22.13.0),支持的节点范围已经保证了.
const jsonv = require("@cldmv/eslint-plugin-jsonv");
module.exports = [
{
files: ["**/*.jsonv"],
plugins: { jsonv },
language: "jsonv/jsonv",
extends: ["jsonv/recommended"]
}
];
配置选项
languageOptions 交给 @cldmv/jsonv 解析器( 均为 parseWithOptions(),用于报告错误,以及 parseToAst(),它构建了AST规则。 每个选项都是可选的;下面的值是默认值:
{
files: ["**/*.jsonv"],
plugins: { jsonv },
language: "jsonv/jsonv",
languageOptions: {
year: 2025, // Target ES year: which jsonv features are allowed
mode: "jsonv", // Parse mode: "jsonv", "json5" or "json"
strictBigInt: false, // true: an unsafe integer needs the `n` suffix
strictOctal: false, // true: legacy `0755` octals are errors (use `0o755`)
allowInternalReferences: true // false: references are not resolved or checked
}
}
| 选项 | 类型 | 允许的值 | 默认 | 含义 |
|---|---|---|---|---|
year | 编号 | 2011, (中文(简体) ), 2015, (中文(简体) ), 2016, (中文(简体) ), 2017, (中文(简体) ), 2018, (中文(简体) ), 2019, (中文(简体) ), 2020, (中文(简体) ), 2021, (中文(简体) ), 2022, (中文(简体) ), 2023, (中文(简体) ), 2024, (中文(简体) ), 2025 | 2025 | 目标ES年. 之后引入的特征是一个错误: 二进制/octal literal和模板 literals需要2015, BigInt需要2020,数字分隔符需要2021. |
mode | 字符串 | "jsonv", (中文(简体) ), "json5", (中文(简体) ), "json" | "jsonv" | 解析模式 . "jsonv" 允许选定年份的每个jsonv特性, "json5" 仅用于JSON5 "json" 为了严格的JSON。 插件通过模式时没有改变,所以它执行的是 @cldmv/jsonv 执行 : @cldmv/jsonv 1.1.0, (中文(简体) ), "json" 拒绝评论,其他JSON和JSON5限制尚未执行. |
strictBigInt | 布尔 | true, (中文(简体) ), false | false | 何时 true,安全范围以外的整数(±9007199254740991),无 n 后缀是一个错误。 何时 false,它被读取为 BigInt. |
strictOctal | 布尔 | true, (中文(简体) ), false | false | 何时 true,一个遗留的八进制文字,例如 0755 是一个错误; 0o755 仍然允许. |
allowInternalReferences | 布尔 | true, (中文(简体) ), false | true | 何时 true内部参考资料backup: port, (中文(简体) ), server.port, (中文(简体) ), `${host}`) 已解决,未定义或循环引用是错误。 何时 false,则未解决,没有报告. |
其他任何密钥,或允许的密钥外的值,都是配置错误(a) TypeError 名称选项).
三个 @cldmv/jsonv 解析选项被故意不接受 :
reviver:一个复活器只会转换被评价的值,而林丁则不会使用该值.preserveComments: AST 总是带评论,所以内含eslint-disable评论和规则可以看到它们.tolerant:插件控制解析错误的收集方式.
内置配置
通常的 ESLint 评论在内部工作 .jsonv 文件 : // eslint-disable, (中文(简体) ), /* eslint-disable <rule> */, (中文(简体) ), /* eslint-enable */, (中文(简体) ), // eslint-disable-line, (中文(简体) ), // eslint-disable-next-line,以及 /* eslint <rule>: "off" */ 规则配置.
写入规则
这个 jsonv/jsonv 语言将文档暴露为从 @cldmv/jsonv是因为 parseToAst()每个节点都有一个 loc (一行和一列)和a range,因此报告该节点上的节点地,规则可以使用节点类型和选择器:
| 节点类型 | 儿童 | 页:1 |
|---|---|---|
Program | body | 该文件; body 是根值. comments 财务报告和审定财务报表 tokens 挂断它. |
ObjectExpression | properties | { ... } |
Property | key, (中文(简体) ), value | key 是一个 Literal (引用或数字键)或 Identifier (未引用密钥). |
ArrayExpression | elements | [ ... ] |
Literal | —— 说 | 字符串,数字, BigInt (bigint 拿着数字,布林斯, null, (中文(简体) ), Infinity, (中文(简体) ), NaN· ; raw 是源文本. |
Identifier | —— 说 | 未引用的密钥, 或诸如 backup: port。 。 。 . |
MemberExpression | object, (中文(简体) ), property | 虚构的内部参考资料,例如 server.port。 。 。 . |
TemplateLiteral | quasis, (中文(简体) ), expressions | 一个反向字符串 ${...} 插值( 平面回击字符串是 Literal) (中文(简体) ). |
TemplateElement | —— 说 | 模板的字面部分. |
// Report every string value containing "TODO", on the string itself
create(context) {
return {
"Property > Literal.value"(node) {
if (typeof node.value === "string" && node.value.includes("TODO")) {
context.report({ node, message: "Unexpected TODO." });
}
}
};
}
支持的特性
ES2011(JSON5基地)
- 单行
//)和多线(/* */评论 - 对象和阵列中的轨迹逗号
- 未引用的对象密钥
- 单引用字符串
- 十六进制字数
0xFF(中文(简体) ) - 领先/累进小数点(
.5, (中文(简体) ),5.(中文(简体) ) - 明确的正向标志( :
+5(中文(简体) ) Infinity, (中文(简体) ),-Infinity, (中文(简体) ),NaN- 多行字符串并有回击续作
- 通过赤裸的识别资料进行内部参考数字 :
{ port: 8080, backup: port }
ES2015(ES6)
- 二进制字数( E)
0b1010(中文(简体) ) - 八角形正文(
0o755,还有遗产0755(中文(简体) ) - 模板字符串( 回击字符串)
- 内部参考的模板插值数字 :
url: `http://${host}:${port}`
ES2020 (英语)
- BigInt 字义
9007199254740992n(中文(简体) ) - 六进制/二进制/八入式
ES2021 (英语)
- 数字分隔符
1_000_000, (中文(简体) ),0xFF_AA, (中文(简体) ),0b1111_0000(中文(简体) )
示例
配置( c). jsonv :
{
// Server configuration with internal references
host: "localhost",
port: 8080,
// Template interpolation
url: `http://${host}:${port}`,
// ES2021 numeric separators
maxConnections: 1_000_000,
// ES2020 BigInt
userId: 9007199254740993n,
// ES2015 binary flags
permissions: 0b1111_0000,
// Nested reference
monitoring: {
healthCheck: url
}
}
许可证
阿帕奇-2.0 ©新来/ CLDMV