npm 锁文件声明副本清单
检查 package-lock v2/v3 安装声明,区分同名副本、别名、链接、工作区和未知版本。
- 1添加输入
- 2确认后运行
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
排查依赖重复前先核对锁文件声明。保留安装路径与版本,不假设每条声明都已存在于磁盘。
如何使用
- 粘贴或打开 package-lock.json,确认版本为 2 或 3。
- 核对声明副本和重复包名,再分别检查别名、链接、工作区及未知版本。
- 下载 JSON 快照或路径级 CSV;修改依赖前另行使用包管理器与文件系统检查。
支持范围与限制
一份 UTF-8 package-lock JSON 文件或粘贴输入,最多 1 MiB;已选文件优先。支持含 packages 对象的 lockfileVersion 2 或 3,最多 10,000 条声明及 512 字符相对路径;拒绝重复 JSON 键和非法描述/路径。
根包条目不计入副本。node_modules 下非链接条目视为安装声明,同名包按路径分组;明确 name 与安装槽不同则归类别名。缺版本保持未知,不假设版本字符串都是 SemVer。
link:true 条目单列声明目标;非 node_modules 位置作为工作区声明。读取 packages 时忽略 v2 旧 dependencies,避免重复计算兼容快照。来源类型仅为标签,不请求 URL 或打开本地目标。
此工具只检查锁文件快照,不扫描磁盘、不验证安装、不审计漏洞,也不证明 npm 可以去重。JSON 保留精确声明版本,CSV 使用表格安全处理;预览最多 200 条安装声明。
操作示例
示例输入
{"lockfileVersion":3,"packages":{"":{},"node_modules/a":{"version":"1.0.0"},"node_modules/b/node_modules/a":{"version":"2.0.0"}}}示例参数
{"params": {}}示例输出
{
"lockfileVersion": "3",
"snapshot": "lockfile declarations only",
"copies": [
{
"path": "node_modules/a",
"slotName": "a",
"name": "a",
"alias": false,
"version": "1.0.0",
"sourceKind": "unspecified"
},
{
"path": "node_modules/b/node_modules/a",
"slotName": "a",
"name": "a",
"alias": false,
"version": "2.0.0",
"sourceKind": "unspecified"
}
],
"duplicates": [
{
"name": "a",
"copies": 2,
"versions": [
"1.0.0",
"2.0.0"
],
"paths": [
"node_modules/a",
"node_modules/b/node_modules/a"
]
}
],
"links": [],
"workspaces": []
}出现问题时
使用含 packages 对象的 v2/v3 锁文件。修复非法/重复键 JSON、相对路径及描述字段类型。旧格式应先由项目包管理器生成当前锁文件,再进行检查。
常见问题
这些包一定已安装吗?
不一定。报告只读取所提供锁文件声明,不检查磁盘 node_modules。
重复包名都能去重吗?
不能这样判断。版本与依赖约束、链接及安装布局需要另行通过包管理器分析。
为什么版本显示未知?
部分描述没有声明 version,报告明确保留缺失,不从 resolved URL 猜测。