package-lock.json
清单的体现描述
对于 npm 修改 node_modules
树或 package.json
的任何操作,都会自动生成 package-lock.json
。 它描述了生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖更新如何。
该文件旨在提交到源存储库中,并用于各种目的:
描述依赖树的单一表示,以保证团队成员、部署和持续集成安装完全相同的依赖。
为 "time-travel" 的用户提供一种工具,使其无需提交目录本身即可进入
node_modules
的先前状态。通过可读的源代码控制差异来促进对树更改的更大可见性。
并通过允许 npm 跳过以前安装的包的重复元数据解析来优化安装过程。
关于 package-lock.json
的一个关键细节是它不能被发布,如果在顶层包以外的任何地方找到它都会被忽略。 它与 npm-shrinkwrap.json 共享格式,本质上是相同的文件,但允许发布。 除非部署 CLI 工具或以其他方式使用发布过程来生成生产包,否则不建议这样做。
如果 package-lock.json
和 npm-shrinkwrap.json
都存在于包的根目录中,则 package-lock.json
将被完全忽略。
文件格式
name
这是一个包锁的包的名称。 这必须与 package.json
中的内容相匹配。
version
这是包锁定的包的版本。 这必须与 package.json
中的内容相匹配。
lockfileVersion
一个整数版本,从 1
开始,带有此文档的版本号,其语义在生成此 package-lock.json
时使用。
packageIntegrity
这是从 package.json
创建的 subresource
integrity 值。 不应对 package.json
进行预处理。 子资源完整性字符串可以由 ssri
等模块生成。
preserveSymlinks
表示安装是在启用环境变量 NODE_PRESERVE_SYMLINKS
的情况下完成的。 安装程序应坚持此属性的值与该环境变量匹配。
dependencies
包名到依赖对象的映射。 依赖对象具有以下属性:
version
这是一个唯一标识此包的说明符,应该可用于获取它的新副本。
- 打包的依赖: 无论来源如何,这是一个纯粹用于提供信息的版本号。
- 注册表来源: 这是一个版本号。 (例如,
1.2.3
) - git 来源: 这是一个带有已解决提交的 git 说明符。 (例如,
git+https://example.com/foo/bar#115311855adb0789a0466714ed48a1499ffea97e
) - http 压缩包来源: 这是压缩包的 URL。 (例如,
https://example.com/example-1.3.0.tgz
) - 本地压缩包来源: 这是 tarball 的文件 URL。 (例如
file:///opt/storage/example-1.3.0.tgz
) - 本地链接来源: 这是链接的文件 URL。 (例如
file:libs/our-module
)
integrity
这是此资源的 Standard Subresource Integrity。
- 对于打包的依赖,这不包括在内,无论来源如何。
- 对于注册表源,这是注册表提供的
integrity
,或者如果未提供shasum
中的 SHA1。 - 对于 git 源,这是我们从中克隆的特定提交哈希。
- 对于远程 tarball 源,这是基于文件 SHA512 的完整性。
- 对于本地 tarball 源: 这是一个基于文件 SHA512 的完整性字段。
resolved
- 对于打包的依赖,这不包括在内,无论来源如何。
- 对于注册表源,这是 tarball 相对于注册表 URL 的路径。 如果 tarball URL 与注册表 URL 不在同一台服务器上,那么这是一个完整的 URL。
bundled
如果为 true,则这是打包的依赖,将由父模块安装。 安装时,此模块将在提取阶段从父模块中提取,而不是作为单独的依赖安装。
dev
如果为真,则此依赖要么是仅顶层模块的开发依赖,要么是一个传递依赖。 这对于既是顶层的开发依赖又是顶层非开发依赖的传递依赖的依赖是错误的。
optional
如果为真,则此依赖要么是仅顶层模块的可选依赖,要么是一个传递依赖。 对于既是顶层的可选依赖又是顶层非可选依赖的传递依赖的依赖,这是错误的。
即使它们在当前平台上可卸载,也应包括所有可选依赖。
requires
这是模块名称到版本的映射。 这是这个模块需要的所有东西的列表,不管它安装在哪里。 版本应该通过正常的匹配规则匹配我们 dependencies
或高于我们级别的依赖。
dependencies
此依赖的依赖,与顶层完全一样。