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 复原所有包时,晋升下载速度。
  • 锁定版本号,避免主动降级新版本