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.依赖是逐个进行下载的,前一个下载完,才可以进行下一个的下载,所以导致下载速度慢

相关推荐
网络点点滴11 小时前
NPM 和 package.json 文件简介
前端·npm·json
青木96011 小时前
前后端开发调试运行技巧
linux·服务器·前端·后端·npm·uv
Rabbit_QL11 小时前
npm 不是“前端的包管理器“—它是 Node.js 的
前端·npm·node.js
草履虫君11 小时前
原电脑只运行了:npm install -g openclaw 要把它迁移到一个新电脑,怎么操作,菜鸟教程
经验分享·ai·npm
是大强12 小时前
nvm安装node成功npm失败
前端·npm·node.js
weixin_427771612 天前
overscroll-behavior 防止滑动穿透
npm
Rabbit_QL2 天前
【前端基础】npm install 是干嘛的(带参数 vs 不带参数)
前端·npm·node.js
Rabbit_QL2 天前
【前端工具链小白篇】前端工具链全景:Node、npm、Vite 各管什么
前端·npm·node.js
福大大架构师每日一题4 天前
openclaw v2026.4.21 更新:图像生成、权限安全、插件修复、Slack 线程、浏览器与 npm 安装全面优化
前端·安全·npm
天若有情6735 天前
【开源推荐】form-validator-cn 轻量级中文表单校验库 | TS 零依赖、极简开箱即用
前端·npm·开源·node·js·表单校验