技术选型时这个问题总是困扰我,今天看到一篇文章,详细的解释了 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.combower,这让 yarn 会更可靠一些。

使用难易度

  1. CLI 用户界面

yarn 的用户界面会更加简洁,但 npm 可以通过 -s 参数去执行静默执行。

  1. 用户体验

npm 和 yarn 在这方面差不多,不过 yarn 可以通过 yarn upgrade-interactive [--latest] 命令,开启一个手动选择包的交互界面。

使用量

npm 在 Github 上有 17.1K 的 Star,而 yarn 的 Star 数为 35.6K,但是从使用量调研上看,yarn 要少很多。

npm 还是 yarn ?的更多相关文章

  1. Npm vs Yarn 之备忘大全

    有则笑话,如此讲到:"老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成.我嘴一抽,来了句:人和动物最大的区别就是人会使用 ...

  2. Node入门教程(7)第五章:node 模块化(下) npm与yarn详解

    Node的包管理器 JavaScript缺少包结构的定义,而CommonJS定义了一系列的规范.而NPM的出现则是为了在CommonJS规范的基础上,实现解决包的安装卸载,依赖管理,版本管理等问题. ...

  3. 一文看懂npm、yarn、pnpm之间的区别

    文作者对比了当前主流的包管理工具npm.yarn.pnpm之间的区别,并提出了合适的使用建议,以下为译文: NPM npm是Node.js能够如此成功的主要原因之一.npm团队做了很多的工作,以确保n ...

  4. npm与yarn命令对比

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 Yarn 是为了弥补 npm 的一些缺陷而出现的(比如,npm install时候会 ...

  5. npm和yarn的使用对比

    NPM YARN 说明 npm init yarn init 初始化某个项目 npm install/link yarn install/link 默认的安装依赖操作 npm install taco ...

  6. npm和yarn的区别

    npm和yarn的区别,我们该如何选择? 周一入职,同事JJ让我熟悉一下基于React的新项目.按照以往,我的步骤都是: git clone xxx npm install npm run dev 这 ...

  7. nodejs中npm以及yarn常用指令

    1.npm下载相关 1.npm install/i vue //下载vue的包 2.npm i vue --save-dev / -D //下载vue的包,并添加到开发依赖中 3.npm i //下载 ...

  8. [转] 一文看懂npm、yarn、pnpm之间的区别

    [From] http://geek.csdn.net/news/detail/197339 原文:Understanding differences between npm, yarn and pn ...

  9. 安装使用yarn,使用国内镜像加速npm和yarn

    安装yarn https://yarnpkg.com/lang/zh-hans/docs/install/ 使用国内镜像加速npm和yarn 1. npm config set registry=ht ...

随机推荐

  1. Fiddler 使用技巧

    1.Host重定向,将192.10.11.12:8091的地址重新定向到127.0.0.1:8080 if (oSession.host=="192.10.11.12:8091") ...

  2. Oracle 闪回归档(Flashback Data Archive)

    --检查权限 SELECT * FROM dba_sys_privs WHERE privilege LIKE '%FLASH%'; --设置权限 GRANT dba TO testuser;--设置 ...

  3. RazorHelper.cs

    完整版 RazorHelper.cs using System; using System.Collections; using System.Collections.Generic; using S ...

  4. wap手机端按下 松开 滑动事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. java代码----方法类练习中~~~未领会

    总结:今天我很失败,问了老师继承的问题还是没弄懂.因为,技术宅的能力,我好怕啊.太强了. package com.da.ima2; public class yut {// 使用substring方法 ...

  6. Java学习之ZooKeeper瑞士军刀简介

    1.简介 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现.分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅.负载均衡.命名服务 ...

  7. react-router4.x 组件和api介绍

    react-router实用4.2.0 react-router非常复杂整体,比vue-router强大很多,好好研究,对你自身能力提高很有帮助 安装 cnpm install react-route ...

  8. elasticsearch的功能及适用场景(2)

    1.Elasticsearch的功能 (1)分布式的搜索引擎和数据分析引擎 搜索:百度,网站的站内搜索,IT系统的检索数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些:新闻网站,最近 ...

  9. spring中的class配置不能使用properties中的字符串

    1.比如在a.properties中我们声明了一个变量: classRoom=com.wc82.ClassRoom 2.然后在spring的配置文件中:applicationContext.xml,有 ...

  10. request 10.0 模块安装

     https://pypi.python.org/packages/49/6f/183063f01aae1e025cf0130772b55848750a2f3a89bfa11b385b35d7329d ...