前端包管理工具 npm 与 yarn 对比

101 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情

npm 与 yarn 都是项目中常用的包管理器。

在使用npm i(npm install)的时候也许大家都吐槽过它的速度,特别是大型的项目,有时还可能出现手动删除node_modules的场景,一个字,慢。总结来说,就是不够快速以及稳定。

npm

NPM(Node Package Manager),是一个NodeJS包管理和分发工具.

  • 安装

nodejs集成了npm,所以无需单独安装,npm-v查看npm版本。

  • 安装包命令:
npm install -g yarn

安装淘宝提供的cnpm,安装后直接用cnpm替代npm

npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 启动项目
npm run ...

在npm中允许安装指定的版本号的依赖或者是最新的依赖,但是会导致一个问题,同一个项目中,package.json相同,但在不同设备上可能会出现不同的版本依赖,从而导致错误出现。

并且在安装的时候可能出现各种花式错误,一不小心就是一串 npm ERR! image.png

yarn

  • 安装:
npm install -g yarn
  • 启动项目
yarn serve
  • 安装包命令:
yarn 

执行后会根据packge.json文件开始安装依赖包,生成node_modules文件夹。 image.png

  • 启动项目
yarn serve

执行yarn install后,会产生一个lock文件,这个文件是用来确保依赖解析时能够又快又稳定。(不需要修改这个文件,yarn 会在管理依赖项时对其进行更新)

image.png

CLI 命令比较

image.png

npm 与 yarn 对比

  • 对比来说,yarn的语义简洁并且更加快速。
  • npm 安装的时候模块版本无法保持一致性;yarn 可以避免包版本的错误匹配(通过 lock file 自动更新,以保持统一性)。
  • npm 安装时,任务按包顺序执行(只有当一个包全部安装完成后,才会安装下一个);Yarn 是并行执行任务,效率更高。