美文网首页
npm包管理总结

npm包管理总结

作者: crazyyoung1020 | 来源:发表于2019-03-24 10:32 被阅读0次

    问题描述

    这周在做一个项目改造,用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记录一下。

    相关文章

      网友评论

          本文标题:npm包管理总结

          本文链接:https://www.haomeiwen.com/subject/kniyvqtx.html