npm学习(十一)之package-lock.json

发布时间 2023-11-28 12:32:27作者: 威武的大萝卜

 

 

package-lock.json

描述

对于npm修改node_modules树或package.json的任何操作,都会自动生成package-lock.json,它描述生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何

此文件拟提交至来源资料库,并可作以下用途:

  • 描述依赖关系树的单一表示形式,以确保队友、部署和持续集成能够安装完全相同的依赖关系。
  • 为用户提供一种工具,让他们可以“穿越”到node_modules以前的状态,而不必提交目录本身。
  • 通过可读的源代码控制差异,提高树更改的可视性。
  • 并通过允许npm跳过先前安装包的重复元数据解析来优化安装过程。

关于package-lock.json的一个关键细节是它是不能发布的,如果在除toplevel包之外的任何地方发现它,它将被忽略。它与npm-shrinkwrap.json共享一种格式,本质上是相同的文件,但允许发布。除非部署CLI工具或使用发布过程来生成生产包,否则不建议这样做。

如果package-lock.json和npm-shrinkwrap.json存在于包的根目录中,package-lock.json将完全被忽略。

生成(2020-12-17)

拿到项目后,执行npm install根据package.json生成node_modules文件

后续需要安装其他包的时候

执行npm install xxx 生成package-lock.json文件

  • 安装模块操作(更新node_moudles文件夹的内容)会自动生成和更新package-lock.json文件

如果删除node_modules再次执行npm install,会根据package-lock.json下载模块

文件格式

name(名字)

package-lock.json中包的名字必须匹配package.json中的内容。

version(版本)

这是程序包锁定的程序包版本。这必须与package.json中的内容匹配。

lockfileVersion

整数版本,从1开始,该文档的版本号为1,在生成这个package-lock.json时使用了该文档的语义。

packageIntegrity

这是从package.json中创建的子资源完整性值。不应该对package.json进行预处理。子资源完整性字符串可以由ssri之类的模块生成。

preserveSymlinks

指示安装完成时启用了环境变量NODE_PRESERVE_SYMLINKS。安装程序应该坚持此属性的值与环境变量匹配。

dependencies(依赖关系)

包名到依赖项对象的映射。依赖对象具有以下属性:

  • version:版本
  • integrity:这是该资源的标准子资源完整性

  • resolved:来源

  • bundled

  • dev

  • optional:可选依赖项

  • requires:依赖包

package-lock.json的作用

package-lock.json和package.json的作用

参考

npm package-lock.json