npm包管理总结

2019-03-24  本文已影响0人  crazyyoung1020

问题描述

这周在做一个项目改造,用weex重构一个比较久的项目。我没有新开一个仓库,而是直接在老项目上拉了一个分支,在分支上做开发。
然后到了代码封板日,我切回分支准备提交代码,打包报错了,突然发现node_modules包忘了备份,这可苦了我,重新npm install各种包,花了我一下午的时间。。。

问题解决

1.我先npm install所有依赖,然后最后报错了,错报的不明不白,重新安装了很多次,还是这样。
然后我就用cnpm install再试了一次,最后也报错了

2.在尝试直接npm install安装失败了很多次后,我决定,一个个依赖安装,反正也不多,就30来个,然后发现还是一直报错,我根据报错百度一波,发现原来有几个依赖版本更新后,前后兼容有问题。

3.最后我把所有依赖改成了固定版本号,再安装,虽然还是报错,根据报错提示xxx module not found,一个个安装,最终解决了问题。

npm依赖包版本控制

  1. 直接写死版本号1.2.3,会安装指定版本1.2.3的依赖包。

这样有个弊端,就是如果依赖包在后续有小版本修复bug,那么我们就得手动去升级重新安装。

  1. ^ 会安装最近的小版本依赖包,比如^1.2.3会安装最新的1.2.x,但是不会安装1.3.0及以上

这个是npm install安装依赖包默认的标记方式,但是代码更新比较大,可能导致代码报错,

  1. ~ 会安装最近的大版本依赖包,比如^1.2.3会安装最新的1.x.x,但是不会安装2.0.0及以上

代码更新比较小,最推荐的写法

  1. * 会安装最新的依赖包

不推荐,这样会导致项目各种报错

package-lock.json

npm 5.0版本后推出了package-lock.json文件,他是用来记录当时npm install 依赖时的确切版本号的。
我们npm install安装依赖后,package.json只会记录大版本,比如 ^1.2.3,但是这样版本更新可能会比较大。package-lock.json就会记录@1.2.3这个版本,后续npm install ,npm会读package-lock.json,指定安装1.2.3版本。

但是这里要注意一点,有package-lock.json的情况下,直接修改package.json里面的版本号会不生效

npm install安装的时候npm不会管package.json,只会去读package-lock.json的版本号。如果需要更新依赖,只能通过npm install xxx@x.x.x的这样的方式,重新在package-lock.json记录一下。

上一篇下一篇

猜你喜欢

热点阅读