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

相关推荐
有梦想的攻城狮21 小时前
从0开始学vue:npm命令详解
前端·vue.js·npm
星光不问赶路人21 小时前
理解 package.json imports:一次配置,跨环境自由切换
前端·npm·node.js
向下的大树1 天前
npm 最新镜像,命令导致下载错误
前端·npm·node.js
迪丽热爱2 天前
解决【npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。】问题
前端·npm·node.js
weixin_456904273 天前
前端开发时npm install报错解决方案
前端·npm·node.js
蓝莓味的口香糖3 天前
【npm】npm命令大全
前端·npm·node.js
源去_云走4 天前
npm 包构建与发布
前端·npm·node.js
码农欧文4 天前
关于npm和pnpm
前端·npm·node.js
阿正的梦工坊4 天前
Mac电脑解决 npm 和 Yarn 安装时的证书过期问题
前端·macos·npm
努力往上爬de蜗牛5 天前
安装npm install vuedraggable@next报错
前端·npm·node.js