package.json在npm中理论用处参考:npm根本应用这篇文章,接下来次要解说package-lock.json
用处以及与package.json
的不同
npm 5以前没有package-lock.json
这个文件,须要保留依赖信息,每次装置时都要加上--save
参数;npm5当前版本退出了package-lock.json
文件。当安装包的时候,不须要加上--save
参数,它会主动保留依赖信息,且会生成或更新package-lock.json
这个文件。
而package-lock.json
呈现有啥用处呢?
当咱们须要下载某一个包的时候,比方:npm install art-template
,实际上不止下载了art-template
一个包,还会下载art-template
包的依赖包,以及其依赖包所依赖的各种包。查看art-template的package.json
文件能够看到art-template的依赖包:
所以当咱们删除node_modules
时,想要应用npm install
通过package.json
文件复原我的项目中所应用的相干的包时,整体工作流程是:查问package.json
文件中要下载的包的下载地址,并下载,而后从以后下载后的包的package.json
文件去查问还须要下载的依赖包,依据依赖包的地址再去下载依赖包。而这个查找的过程在有很多依赖包的状况下,下载的速度会显著降落,而此时,package-lock.json
就派上了用处,这个文件保留了node_modules
中所有的包(包含以后下载的包以及依赖包)的信息:版本、下载地址(这个信息在一开始第一次安装包时就写入了package-lock.json
文件中)。这样当npm install
的时候间接从以后文件依据下载地址间接下载,而不再每次都先下载以后的包,再查问以后包的package.json
文件再去下载。从而下载速度大大晋升。
咱们再来看一种状况:在理论我的项目开发过程中,并不是最新版本的包是适宜于以后我的项目的创立的,因而如果一个我的项目依赖了1.1.1
版本,当你从新npm install
的时候其实会下载最新版本,也不是1.1.1
,也这也并不是咱们想要的后果,而咱们的目标次要想要锁住1.1.1
这个版本,而package-lock.json
这个文件在这个时候开始起作用,其能够锁定版本号,避免主动降级新版本,也就是说在package-lock.json
中配置的版本号如果低于最新版本号,然而在npm install
的时候也不会降级版本号,从而让package-lock.json
文件名中的lock
货真价实。
总结:
package.json
记录的是以后我的项目中你下载了哪些包(也即npm install xx
的包信息),记录了你下载的包信息(地址、版本号等),不蕴含依赖包信息。
package-lock.json
文件记录的是以后我的项目中你下载了哪些包以及你下载的这些包的各种依赖包信息,包含地址、版本号等。次要作用有以下两点:
- 当删除node_module目录时,想通过
npm install
复原所有包时,晋升下载速度。 - 锁定版本号,避免主动降级新版本