NPM package-lock.json
清单的体现
说明
package-lock.json
会为 npm 修改 node_modules 树或的任何操作自动生成 package.json。
它描述了生成的确切树,因此无论中间依赖项更新如何,后续安装都可以生成相同的树。
该文件旨在提交到源存储库中,并具有多种用途:
-
描述依赖关系树的单个表示,这样可以确保队友,部署和持续集成安装完全相同的依赖关系。
-
为用户提供一种便利,使其可以“时间旅行”到以前的状态,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 从此文档的版本号开始,在生成 this 时使用了其语义 package-lock.json
。
packageIntegrity
这是从中创建的子资源完整性值 package.json。请勿进行预处理 package.json。子资源完整性字符串可以由类似的模块生成 ssri。
preserveSymlinks
表示安装是在 NODE_PRESERVE_SYMLINKS 启用环境变量的情况下完成的 。安装程序应坚持该属性的值与该环境变量匹配。
dependencies
程序包名称到依赖项对象的映射。依赖对象具有以下属性:
version
这是一个说明符,可唯一标识此程序包,并应可用于获取它的新副本。
- 捆绑的依赖关系:不管来源如何,这都是一个纯粹用于参考目的的版本号。
- 注册表源:这是一个版本号。(例如,1.2.3)
- git 源:这是一个具有已解决承诺的 git 说明符。(例如,git+https://example.com/foo/bar#115311855adb0789a0466714ed48a1499ffea97e)
- http tarball 来源:这是 tarball 的 URL。(例如,https://example.com/example-1.3.0.tgz)
- 本地 tarball 来源:这是 tarball 的文件 URL。(例如 file:///opt/storage/example-1.3.0.tgz)
- 本地链接源:这是链接的文件 URL。(例如 file:libs/our-module)
integrity
这是此资源的标准子资源完整性。
对于捆绑的依赖项,无论来源如何,均不包括在内。 对于注册表源,这是 integrity 注册表提供的,或者如果未提供 SHA1 shasum。 对于 git 源,这是我们从中克隆的特定提交哈希。 对于远程 tarball 源,这是基于文件 SHA512 的完整性。 对于本地 tarball 源:这是基于文件 SHA512 的完整性字段。
resolved
对于捆绑的依赖项,无论来源如何,均不包括在内。 对于注册表源,这是 tarball 相对于注册表 URL 的路径。如果 tarball URL 与注册表 URL 不在同一服务器上,则这是完整的 URL。
bundled
如果为 true,则为捆绑的依赖关系,并将由父模块安装。安装时,此模块将在提取阶段从父模块中提取,而不是作为单独的依赖项安装。
dev
如果为 true,则此依赖项仅是顶层模块的开发依赖项,或者是一个传递性依赖项。对于既是顶层的开发依赖关系又是顶层的非开发依赖关系的传递依赖关系的依赖关系,这是错误的。
optional
如果为 true,则此依赖项仅是顶层模块的可选依赖项,或者是一个传递性依赖项。对于既是顶层的可选依赖关系又是顶层的非可选依赖关系的传递性依赖关系的依赖关系,则为 false。
即使所有可选依赖项都可以在当前平台上卸载,也应包括在内。
requires
这是模块名称到版本的映射。这是该模块所需的所有内容的列表,无论它将安装在哪里。版本应通过正常的匹配规则匹配我们 dependencies 或更高级别的依赖关系 。
dependencies
此依赖关系的依赖关系,与顶层完全相同。