npm是什么?优缺点又是什么?

yarn和npm一样,都是包管理工具,那么他们两者的区别到底是什么呢,我们应该使用哪一个呢

下面我们就来详细看下,它们分别是什么

一.NPM

npm是Node.js能够如此成功的主要原因之一

npm是围绕着语义版本控制的思想而设计的,下面是从他们的网站摘过来的:

给定一个版本号:主版本号.次版本号.补丁版本号

  • 主版本号: 当API发生改变,并与之前的版本不兼容的时候
  • 次版本号: 当增加了功能,但是向后兼容的时候
  • 补丁版本号: 当做了向后兼容的缺陷修复的时候 npm使用一个名为package.json的文件,用户可以通过npm install --save命令把项目里所有的依赖项保存在这个文件里

下图是package.json中的某依赖的版本号:

复制代码
"5.0.3", "~5.0.3", "^5.0.3"

"5.0.3"表示安装指定的5.0.3版本

"~5.0.3"表示安装5.0.X中最新的版本

"^5.0.3"表示安装5.X.X中最新的版本

这就比较恶心,所以常常会出现同一个项目,有的同事运行可以,但是有的同事会由于安装的版本不一致出现很诡异的bug,也就会出现我们经常听到的一句话:"在我的电脑上可以........."

而且很多npm库都严重依赖于其他npm库,这会导致嵌套依赖关系,并增加无法匹配相应版本的概率,从而出错

安装的时候,包会在同一时间下载和安装,中途某个时候,一个包出了错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,所以你很难找到真正出错的包和原因

还有就是,如果我们之前npm装过了依赖,但是后面又执行npm install ,那么又会再从网络上重新下载依赖,导致变得非常慢。

综上所述,来总结一下npm的缺点:

1.由于版本号的影响,所以会造成版本不统一的情况

2.由于npm库存在嵌套依赖的关系,会增加无法匹配相应版本的概率

3.npm 的输出信息比较冗长。在执行 npm install 的时候,命令行里会不断地打印出所有被安装上的依赖,不够简洁

4.重复安装的时候,不直接从缓存中获取,还需要从网络上下载

5.依赖是逐个进行下载的,前一个下载完,才可以进行下一个的下载,所以导致下载速度慢

相关推荐
sanzk2 天前
Node.js | pnpm下载安装与环境配置
npm
爱宇阳2 天前
npm 常用标签与使用技巧新手教程
前端·npm·node.js
郑板桥302 天前
TypeScript:npm的types、typings、@type的区别
javascript·typescript·npm
@大迁世界2 天前
2025 年该选谁?npm vs yarn vs pnpm
前端·npm·node.js
crary,记忆2 天前
简介NPM 和 NPX
前端·学习·npm·node.js
前端架构师-老李3 天前
npm、yarn、pnpm的对比和优略
前端·npm·node.js·pnpm·yarn
勉灬之3 天前
通过npm run XXX命令生成uniapp的pages.json文件
npm·uni-app·json
duandashuaige6 天前
解决用electron打包Vue工程(Vite)报错electron : Failed to load URL : xxx... with error : ERR _CONNECTION_REFUSED
javascript·typescript·electron·npm·vue·html
weixin_405023377 天前
包资源管理器NPM 使用
前端·npm·node.js
小于小于09127 天前
npx 与 npm 区别
前端·npm·node.js