npm 还是 yarn ?
技术选型时这个问题总是困扰我,今天看到一篇文章,详细的解释了 npm 和 yarn 在性能,安全,支持性和使用难易度上的区别,看完之后这个问题终于有一个答案:
如果你在意速度和 UI,选 yarn,如果你是个保守派,选 npm 会更加合适。
文章地址:https://stackshare.io/stackups/npm-vs-yarn
性能
无论是在无缓存项目中(没有 nodemodules 目录),还是在有缓存项目中,yarn 都比 npm 快,2 分钟或十几秒,而且 yarn 还支持离线下载!(这主要是因为 yarn 支持并行下载包);
安全
yarn 和 npm 都采用了一些方法锁定包的依赖版本,以防止包的依赖错误,所以两者在这一点上是同样安全的,但是 yarn 多了一个「协议检查」的功能,使用 yarn licenses list
命令可以看到各个包的协议,其实没什么用。
支持性
yarn 是由 facebook 维护的,用来弥补 npm 的不足,而 npm 是由 Isaac Z. Schlueter 创建的一个开源的包管理器。两者的支持性其实差不多,但是更多人因为 yarn 的性能选择 yarn。除此之外,yarn 选择从多个包仓库下载包,例如 npmjs.com
和 bower
,这让 yarn 会更可靠一些。
使用难易度
- CLI 用户界面
yarn 的用户界面会更加简洁,但 npm 可以通过 -s
参数去执行静默执行。
- 用户体验
npm 和 yarn 在这方面差不多,不过 yarn 可以通过 yarn upgrade-interactive [--latest]
命令,开启一个手动选择包的交互界面。
使用量
npm 在 Github 上有 17.1K 的 Star,而 yarn 的 Star 数为 35.6K,但是从使用量调研上看,yarn 要少很多。