npm 加速之 yarn cnpm pnpm
有没有感觉到使用 npm 的时候很慢? 安装速度 几Kb/s
不说, 还装着装着出错了, 奇奇怪怪的问题.
这种情况大多数还是因为网络的原因, 很多时候虽然 没有直接提示超时
, 但还是可能由于网络原因导致的不能正常提示, 比如断断续续的下载导致安装脚本不完整.
告别龟速一般有几种途径:
使用国内镜像 - 网速优化
所谓国内镜像, 简单来说就是把国外的资源复制一份到国内, 下载的时候从国内下载.
比较常用的的淘宝镜像, 可能用如下命令配置 npm 的镜像:npm config set registry=https://registry.npm.taobao.org
之后安装工具就会明显快得很多.
如果需要管理多个镜像地址, 可以使用 nrm
。
$ nrm ls # 查看所有镜像源, 带 * 号的是正在使用的
* npm ---- https://registry.npmjs.org/
cnpm --- http://r.cnpmjs.org/
nj ----- https://registry.nodejitsu.com/
npmMirror https://skimdb.npmjs.com/registry/
edunpm - http://registry.enpmjs.org/
$ nrm add taobao https://registry.npm.taobao.org/ # 添加镜像源
$ nrm use taobao # 切换镜像源为淘宝
$ nrm test taobao # 查看淘宝镜像的连接速度
使用缓存, 多线程, 锁… - 本地优化
一开始 npm 的依赖管理方式以及安装方式受到不少人的不满, 比如:
深层嵌套, 这会在一些对目录长度有限制的系统上出现问题.
不确定性, 安装时默认会升级小版本, 但很多软件小版本升级也不兼容, 导致重新安装时程序出错.
一些大厂或大牛视图解决类似问题, 开发了其他的管理器, 如 yarn cnpm pnpm ...
, 但常用的就 yarn cnpm .
yarn 主要有以下特性:
- 离线模式, 如果您以前安装过软件包,则可以在没有Internet连接的情况下再次安装它。
- 确定性的, 无论安装顺序如何,都将以完全相同的方式在所有计算机上安装相同的依赖项。
- 网络性能, 可以有效地对请求进行排队,并避免请求瀑布,以最大程度地利用网络。
- 网络弹性, 失败的单个请求不会导致整个安装失败。失败时将自动重试请求。
- 平面模式, 将不匹配的依赖项版本解析为单个版本,以避免创建重复项。
yarn 与 npm 的使用命令有一些不同:
npm | yarn |
---|---|
npm i | yarn |
npm i react -S | yarn add react |
npm un react -S | yarn remove react |
npm i react -D | yarn add react -D |
npm update -S | yarn upgrade |
cnpm 主要有以下特性:
- 自带淘宝镜像
- 简化安装信息
- 与 npm 一致的命令
注意
yarn:
- 使用方式不同, 别搞错
- 由于使用多线程, 在内存小的计算机上安装时, 安装途中会被 kill 掉
npm:
- 由于第三方的压力, npm 也进行了很多改进
- 发布自己的工具时, 建议使用 npm
扩展阅读
yarn: https://github.com/yarnpkg/yarn
cnpm: https://github.com/cnpm/cnpm
pnpm: https://github.com/pnpm/pnpm
文章来源
注: 本文来源于微信公众号 【乐玩nodejs npm工具库】。