版本号 / 包与依赖

package.json 编辑器

编辑一份清单,定位字段错误,预览依赖排序;脚本和条件导出的原顺序保持不变。

package.json 编辑器

清单输入

格式化结果

清单在当前浏览器内处理,不查询注册表,不执行脚本。

字段说明与限制

name 标识包名,按新包命名规则检查。本地项目可省略。

检查内置清单规则、名称与根版本。其他工具的扩展配置保留,但不进行专项校验。

单个对象,最多 100,000 个 UTF-16 代码单元、100 层。不安全整数及溢出会拒绝;依赖指定值只检查是否为字符串。

依赖分组

dependencies: 0 · devDependencies: 0 · peerDependencies: 0 · optionalDependencies: 0

暂无依赖条目。

输入或参数已变化,请重新检查后导出。

合并分支后,清单语法可能正确,依赖值类型或包名却不符合要求。package.json 编辑器把这些检查分开显示,方便在提交代码前逐项核对。

先观察私有项目示例中的四类依赖。同一个包出现在多个组里不代表应该删除;排序只整理各组内的名称,具体归类仍由项目决定。

为什么使用 package.json 编辑器

只整理依赖,不改条件优先级

package.json 编辑器只对 dependencies、devDependencies、peerDependencies 和 optionalDependencies 组内排序。顶层字段、scripts 和 exports 条件保持原序,避免为了让差异好看而改变条件匹配结果。

四组依赖分别重新排列,旁边的条件导出分支保持原位。

替换输入之前先看完整结果

结果区独立展示新清单。应用结果、加载示例和清空都会先显示替换内容与字符数;确认后保留一次撤销,同时恢复原输入、原结果及其有效或过期状态。

原始清单与独立预览之间有应用箭头,并用返回箭头表示撤销。

把预览与写回分开操作

01

按需要暂停自动检查

自动检查在停止输入 350 毫秒后执行。关闭开关后显示主按钮,也可按 Ctrl 或 Cmd 加 Enter 手动检查。修改输入或缩进后,旧结果立即停止导出。

02

核对真正发生变化的组

依赖排序先生成结果,状态行统计实际重排的依赖组数。切回保留原顺序即可重新格式化原输入;这些操作不会升级版本,也不会把开发依赖移动到运行依赖。

03

确认后应用,必要时整体撤销

有效结果无需写回也能复制或下载。应用结果会打开替换预览,确认后才覆盖输入;撤销会一起恢复之前的输入和输出,不依赖逐个字符倒推。

从语法到清单字段逐层核对

严格语法与原文定位

package.json 校验会拒绝注释、尾逗号、重复键及数组根节点。错误保留原始行列和 JSON Pointer,带斜杠的依赖名也能准确表示,不会先格式化再给出错误位置。

名称规则与根版本分开检查

npm 包名检查对根 name 使用新包规则,对依赖键允许历史合法名称。填写了 version 就用 node-semver 判断;本地项目缺少 name 或 version 不会直接判错。

四类依赖一目了然

面板按组列出名称和原样版本字符串,每次显示 100 行。字段说明解释运行依赖、开发依赖、同伴依赖和可选依赖的区别,编辑时仍以左侧完整清单为准。

可控的格式化与导出

package.json 格式化支持两空格、四空格和制表符。依赖排序不触及其他对象,自定义字段及数值字面写法保持。导出的文件名是 package.json,方便在本地进一步审阅。

通过检查不等于可以安装或发布

只检查内置 schema 覆盖的结构
使用随站点打包的 SchemaStore 派生规则,并把 private 限定为布尔值。ESLint、Prettier 等扩展配置会保留,不进行各自的专项校验;输入里的 $schema 不会触发下载。
不判断版本存在与依赖安全
依赖值只要求字符串,范围、标签、Git URL、本地路径、别名及 workspace 写法原样保留。工具不解析安装树,不判断版本是否存在、是否最新或是否存在漏洞。
不运行脚本,也不修改项目
scripts 仅作为文本字段读取。工具不会执行命令、安装依赖、发布包、更新锁文件或查找其他工作区文件,因此结果不能代替项目环境中的检查。
排序不会跨组重排
只整理四个依赖对象内部的键,不删除跨组重复包,不改 exports 或 imports 条件,不重排数组、脚本或顶层字段。格式化可能重新转义字符串,但保留其值。
输入有明确上限
最多处理 100,000 个 UTF-16 代码单元、100 层嵌套的单个 JSON 对象。不安全整数和数值溢出会阻断输出;最多展示 50 条诊断,失败或过期的结果不能复制与下载。

package.json 编辑器常见问题

package.json 里怎么添加注释?

标准 JSON 不允许双斜杠或块注释,本工具会报错,不会自动删掉注释后假装通过。若用自定义元数据字段记录说明,它只是普通数据,仍需确认项目其他工具是否接受这种约定。

dependencies、devDependencies 和 peerDependencies 有什么区别?

dependencies 是运行时依赖,devDependencies 用于开发和测试,peerDependencies 表达对使用方环境的兼容要求;optionalDependencies 允许安装失败。工具保留全部组,不自动推断某个包应该放在哪里。

不安装额外软件包,能把 package.json 依赖按字母排序吗?

可以。排序在浏览器中对四类依赖名称分别执行,不需要安装额外软件包。先看结果和重排组数,再复制或下载;scripts 及条件导出顺序不会跟着改变。

为什么 package.json 的 name 提示不符合格式规则?

新包名需要符合小写、适合 URL 的字符和总长不超过 214 个字符等规则,支持 @team/widget 这类带作用域名称。名称语法合法并不意味着注册表中仍可用,也不证明你拥有该名称。

package.json 版本中的 ~ 和 ^ 有什么区别?

对于常见的非零主版本,~1.2.3 通常允许补丁更新,^1.2.3 还允许兼容的次版本更新。零主版本和预发布有额外规则;这里会保留原始范围,不推算最终安装版本。

最简 package.json 需要哪些字段?

如果项目不准备发布,npm 允许省略 name 和 version,因此空对象也能通过这里的本地结构检查。发布还有额外元数据与环境要求,通过检查不代表取得发布许可。

还缺少实用的清单检查?

审阅下一次清单修改

在 package.json 编辑器中从小示例开始,核对依赖分组与错误位置,确认预览后再把结果写回输入。