美文网首页yarnnpmalready
npm 和 yarn 的区别

npm 和 yarn 的区别

作者: 生命里那束光 | 来源:发表于2022-04-17 09:49 被阅读0次

引言

虽然网上和知乎上有好多文章写 npm 和 yarn 的区别。并且我写的文章中借鉴他人的,但还是希望发出来,自己想看的时候,就立马可以找到。引用的文章也会在底部写出来了。

yarn 介绍

yarn 是由 Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具,yarn 是为了弥补 npm 的一些缺陷而出现的。

npm 的缺陷:

  • npm install 下载速度慢,重新 install 时速度依旧慢

  • 同一个项目,安装的无法保持一致性。原因是因为 package.json 文件中版本号的特点导致的,下面三个版本号在安装的时候代表不同的含义。

"5.0.3"     # 表示安装指定的5.0.3版本
"~5.0.3"    # 表示安装5.0.X中最新的版本
"^5.0.3"    # 表示安装5.X.X中最新的版本
  • 使用 npm 安装多个 js 包时,包会在同一时间下载和安装。安装过程中,其中一个包抛出了一个异常,但 npm 会继续安装其他包,所以错误信息就会在一大堆提示信息中丢失掉,以至于直到执行前,都不会发现实际发生的错误。

yarn 优点

1. 速度快:(主要来自一下两个方面)

  • 并行安装

    无论 npm 还是 yarn 在安装包的时候,都会执行一系列任务。 npm 是按照队列执行每个 package,所以 npm 是串行的。

    而 yarn 是并行的,它同步执行所有任务,性能得到了极大的提升。

  • 离线模式

    如果使用 yarn 已经安装过一个软件包,再次安装时 yarn 会在之前的缓存中获取,而不会像 npm 再次从网络中下载。

2. 安装版本统一

  1. 为了保持安装版本的统一性,yarn 有一个锁定文件(lock file)。它记录了被确切安装上的模块的版本号。每次只要新增一个模块,Yarn 就会更新 yarn.lock 这个文件。这么做保证了每一次拉取同一个项目依赖时,使用的都是一样的模块版本。
  2. npm 也有办法实现使用相同版本的 packages,但需要开发者执行 npm shrinkwrap 命令。这个命令将会生成一个锁定文件,在执行 npm install 的时候,该锁定文件会先被读取,和 Yarn 读取 yarn.lock 文件一个道理。
  3. npm 和 Yarn 两者的不同之处在于:Yarn 默认会生成这样的锁定文件,而 npm 要通过 shrinkwrap 命令生成 npm-shrinkwrap.json 文件,只有当这个文件存在的时候,packages 版本信息才会被记录和更新。
    3. 输出简洁
  • npm 的输出信息比较冗长。在执行 npm install <package> 的时候,命令行里会不断地打印出所有被安装上的依赖。
  • Yarn 简洁太多:默认情况下,结合了 emoji 直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。

4. 多注册来源处理

  • 所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。

5. 语义化进行了修改

  • yarn 改变了一些 npm 命令的名称,比如 yarn add/remove 安装卸载模块,而 npm 是 install/uninstall 安装卸载模块。

常用命令:

  • yarn / yarn install 等同于npm install 批量安装依赖
  • yarn add xxx 等同于 npm install xxx —save 安装指定包到指定位置
  • yarn remove xxx 等同于 npm uninstall xxx —save 卸载指定包
  • yarn add xxx —dev 等同于 npm install xxx —save-dev
  • yarn upgrade 等同于 npm update 升级全部包
  • yarn global add xxx 等同于 npm install xxx -g 全局安装指定包

yarn 和 npm 命令对比

1.查看版本

yarn --version
npm -version(或者 node -v)

2.安装淘宝镜像

yarn config set registry 'https://registry.npm.taobao.org'     
npm install -g cnpm --registry=http://registry.npm.taobao.org

3.初始化某个项目

yarn init                                                  
npm init

4.默认安装项目依赖

yarn install                                            
cnpm install

5.安装依赖,并且默认保存到 package

yarn add xxx                                        
cnpm install xxx --save

6.卸载依赖

yarn remove xxx                                    
cnpm uninstall xxx --save

7.更新依赖

yarn upgrade xxx                                  
cnpm update xxx --save

8.安装全局项目依赖

yarn global add xxx                                
cnpm install xxx -g

9.安装特定版本号的项目依赖

yarn add xxx@                                       
cnpm install xxx@1.2.33 --save

10.发布/登录/登出,一系列NPM Registry操作

yarn publish/login/logout                         
npm publish/login/logout

11.运行命令

yarn run/test                                           
npm run/test

相关文章

  • npm 和 yarn区别

  • yarn 和 npm 的区别

    包管理工具的安装: yarn的安装: 下载软件,傻瓜式安装。 注(PS): 用npm进行安装yarn会报错,不能使...

  • yarn和npm 的区别

    Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 — Yar...

  • yarn 和 npm 的区别

    包管理工具的安装:yarn的安装:下载软件,傻瓜式安装。注(PS):用npm进行安装yarn会报错,不能使用 np...

  • npm和yarn的区别

    npm和yarn都是包管理工具,都可以安装包和模块,大家都应该用过这两个包管理工具,用npm后会生成一个packa...

  • yarn和npm的区别

    熟悉一个新项目一般都是如下步骤: yarn是什么? yarn是由Facebook、Google、Exponent ...

  • npm 和 yarn 的区别

    引言 虽然网上和知乎上有好多文章写 npm 和 yarn[https://so.csdn.net/so/searc...

  • 初始yarn、yarn和Npm的区别

    yarn英文官网[https://yarnpkg.com/] yarn是软件包管理器,允许世界上所有开发人员一起使...

  • npm、yarn、cnpm

    1. npm 2. cnpm 3. yarn 4. npm与yarn使用命令的区别 npmyarn安装依赖...

  • npm、yarn切换源、加代理

    npm和yarn转换淘宝源和官方源 npm 设置代理 npm 删除代理 yarn 设置代理 yarn 删除代理

网友评论

    本文标题:npm 和 yarn 的区别

    本文链接:https://www.haomeiwen.com/subject/oohqertx.html