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

相关推荐
咔咔一顿操作1 天前
轻量无依赖!autoviwe 页面自适应组件实战:从安装到源码深度解析
javascript·arcgis·npm·css3·html5
aidou13142 天前
Visual Studio Code(VS Code)安装步骤
vscode·npm·node.js·环境变量
全栈小52 天前
【前端】win11操作系统安装完最新版本的NodeJs运行npm install报错,提示在此系统上禁止运行脚本
前端·npm·node.js
DevOps探索之旅3 天前
Hadess从入门到精通,如何详细管理Npm制品
npm·hadess·国产开源制品管理工具·一文上手
一心赚狗粮的宇叔4 天前
VScode常用扩展包&Node.js安装及npm包安装
vscode·npm·node.js·web
嘿是我呀4 天前
【用npm安装node时报错“npm 无法加载文件”】
前端·npm·node.js
Hexene...4 天前
【前端Vue】npm install时根据新的状态重新引入实际用到的包,不引入未使用到的
前端·vue.js·npm
霸气小男4 天前
使用nvm安装node之后在vscode中无法使用npm报错
npm
i建模5 天前
在 Ubuntu 中为 npm 切换国内镜像源
linux·ubuntu·npm
每天瞎忙的农民工5 天前
Ubuntu 24 安装npm22
linux·运维·ubuntu·npm