技术选型时这个问题老是困扰我,今天看到一篇文章,详细的解释了 npm 和 yarn 在性能,安全,支持性和使用难易度上的区别,看完以后这个问题终于有一个答案:node
若是你在乎速度和 UI,选 yarn,若是你是个保守派,选 npm 会更加合适。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 会更可靠一些。code
yarn 的用户界面会更加简洁,但 npm 能够经过 -s
参数去执行静默执行。bower
npm 和 yarn 在这方面差很少,不过 yarn 能够经过 yarn upgrade-interactive [--latest]
命令,开启一个手动选择包的交互界面。get
npm 在 Github 上有 17.1K 的 Star,而 yarn 的 Star 数为 35.6K,可是从使用量调研上看,yarn 要少不少。it