当前位置: 首页 > 后端技术 > Node.js

npm依赖包版本在JavaScript项目中被锁定

时间:2023-04-03 18:26:20 Node.js

前言:最近使用cnpm安装项目依赖后,运行项目时出现样式混乱的问题。描述:最近在升级项目webpack的时候,删除了node_modules,重新安装,cnpminstall,运行项目,发现有些地方的风格和之前的风格不一样了,风格变得乱了,然后开始找问题并找到正常运行的同事打开package.json后发现版本信息是一样的,问题很奇怪。从逻辑上讲,package.json也是如此,node_modules也是如此。然后复制同事的node_modules,结果正常。为什么node_modules不同?我和同事对比了依赖的版本,发现还是有区别的。左边是错的,右边是对的;然后我在右侧安装了正确的版本,发现样式问题没问题。为什么安装的版本不同?下图是本地项目package.json依赖网上的。包中的^是什么意思,例子如下:1.2.1-匹配指定版本,这里是匹配1.2.1。^1.0.0匹配>=1.0.0和<2.0.0的版本。^前缀表示与指定版本兼容。^前缀表示最左边的非零段不允许改变,这个段之后的段可以是更高版本,所以^1.1.0匹配>=1.1.0,<2.0.0匹配^0.0.3>=0.0.3And<0.0.4latest当前发布版本。这是一个标签(tag,详见dist-tag|npm文档),默认情况下npminstall安装这个最新的标签。常见标志是下一个稳定的beta金丝雀。^5.x匹配>=5.0.0和<6.0.0。x、x、*是通配符,版本号末尾省略的段相当于通配符,所以match>=0.0.01匹配>=1.0.0,<2.0.01.2匹配>=1.2.0和<1.3.0~0.1.1匹配>=0.1.1和<0.2.0。~前缀表示大约等于版本。如果存在次要版本号,则允许修订号为更高版本,否则允许次要版本号为更高版本。~1匹配>=1.0.0,<2.0.0匹配>=0.0.0=3.0.0字面上>=3.0.0。<<=>>==多个表达式用空格分隔表示并集,||用于分隔路口。1.30.2-2.30.2match>=1.30.2and<=2.30.2原因找到了,如何解决?我们常用的安装依赖的方式有3种:cnpm、npm、yarn:cnpm:优点是速度快,缺点是没办法保证每个同事在版本更新的时候安装依赖一致,依赖升级npm会有不兼容问题:优点是可以通过package-lock.json文件锁定版本,缺点是安装速度慢。yarn:优点是比npm快,yarn.lock文件可以锁定版本。缺点是学习成本比较高。基于团队的考虑,还是使用yarn来控制项目依赖的版本。yarn的使用和npm差不多,学起来也比较快。问题解决了,开心。下面介绍纱线的常用方法。如何使用yarn安装yarn的所有依赖brewinstallyarn安装项目yarn||yarninstall分别向devDependencies、peerDependencies和optionalDependencies添加依赖包:[package]@[version]--devyarnupgrade[package]@[tag]--devdeletedependencyyarnremove[package]总结一直使用cnpm安装依赖,安装速度快,也比较方便,但是多人协同开发容易出问题,多人协同开发依赖版本要保持一致。避免依赖版本不兼容的项目出现问题。