技术选型时这个问题总是困扰我,今天看到一篇文章,详细的解释了 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. CodeForces 620E:New Year Tree(dfs序+线段树)

    E. New Year Treetime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputout ...

  2. Spring中的线程池ThreadPoolTaskExecutor介绍

    前言: Java SE 5.0引入了ThreadPoolExecutor.ScheduledThreadPoolExecutor.Spring 2.x借助ConcurrentTaskExecutor和 ...

  3. Java-API:java.lang百科

    ylbtech-Java-API:java.lang百科 java.lang是提供利用 Java 编程语言进行程序设计的基础类.最重要的类是Object(它是类层次结构的根)和 Class(它的实例表 ...

  4. hibernate 单元测试

     单元测试 测试 dao service action package com.kaishengit.test; import org.hibernate.Session; import com.ka ...

  5. DAY19-Pillow制作验证码

    PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. 由于PIL仅支持到Python 2.7,加上年久失修 ...

  6. DAY13-前端之jQuery

    jQuery jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行 ...

  7. JMS编程模型

    (1) ConnectionFactory创建Connection对象的工厂,针对两种不同的jms消息模型,分别有QueueConnectionFactory和TopicConnectionFacto ...

  8. java定时器控制时间打印

    public class test2 { public static void main(String []args){ Timer timer=new Timer(); timer.schedule ...

  9. 【273】利用ArcPy建立处理数据的脚本

    这个脚本可以直接运行处理程序,首先在 ArcPy 上面测试,成功后写入文件,下面的代码实现将指定文件夹内部的栅格数据进行 Calculate Statistics 操作,否则在进行专题图制作的时候会出 ...

  10. ElasticSearch入门一

    ElasticSearch入门一 1 安装ElasticSearch,配置环境变量,并且存在Java环境,而且是Java环境: 下图是安装的目录: 进入bin目录之后,请看bin目录: 启动elast ...