package.json和package-lock.json(新手必备系列,后续会补充文件内部细节)

468 阅读2分钟

本教程只试用于初学者,大佬绕行,如有遗漏请多指教。 基于node项目中有两个不可或缺的文件package.json和package-lock.json,两者有什么区别呢?下面,我将根据我的实际开发经验,简单的给大家梳理一下。

首先你要搞清楚npm install都做了什么,重点来了(敲黑板!扔粉笔头!!!)。 当你执行npm install的时候,node从package.json文件中读取所有dependencies信息,然后根据dependencies中的信息与node_modules中的模块对比,没有就安装,已有就检查更新,但是在更新的时候,node会从package-lock.json文件中获取对应锁定的版本号进行更新操作。

1、package.json文件,npm init的时候项目会自动创建 package.json文件,package.json文件只记录你通过npm install方式安装的模块信息,而这些模块所依赖的其他子模块的信息不会记录。

2、package-lock.json,npm install的时候会自动创建package-lock.json文件,lock,锁的意思,所以他最主要的作用是锁定当前项目已安装依赖文件的版本号,防止自动升级,比如锁定某个文件的版本号为10.1.0版本,保证项目的稳定性,我们一般不能随意升级依赖的版本号,否则当你安装完依赖以后,肯定会口吐莲花,慰问项目的十八辈先人,但是有时候因为老的版本号太过老旧,必须升级package-lock.json里面的库包,怎么操作呢?npm install XXX@x.x.x 这样就能准确的找到对应的库包了,其次package-lock.json这个文件会保存node_modules中所有包的信息(版本、下载地址)这样的话重新npm install的时候速度就可以提升。

注意: 1、npm5以前是没有package-lock.json这个文件的 2、如果这两个文件都不存在,执行npm install的时候node_modules中的模块信息全部记入package-lock.json文件中,重新生成package-lock.json文件,但是不会生成package.json文件,需要通过"npm init --yes"来生成。