npm学习(十一)之package-lock.json
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的作用