Yarn

303 阅读1分钟

yarn vs npm

yarn是由Facebook、Google、Exponent和Tilde联合推出的一个新的JS包管理工具,为了弥补npm的不足:

  1. npm安转包的速度不够快,拉取的包版本可能不同
  2. npm允许在安装包时执行代码,存在安全隐患

yarn 与 npm 命令对比

image.png

yarn特点

yarn.lock

记录被确切安装上的模块的版本,防止拉取到不同版本的代码,产生的bug。eg:"@rollup/plugin-replace": "^2.3.3",都是拉取大版本号,如果不同小版本间包存在兼容问题,就又可能产生bug。

并行安装

yarn是并行安装包,而npm是串行安装,yarn速度更快

monorepo管理模式

monorepo是最近比较流行的项目管理模式,比如vue、vite,也需要借用yarn去进行管理。

在package.json文件中添加yarn workspaces

 "private": true, // 项目根目录下的private必须设置成true,否则workspace不会被启用
  "workspaces": [ //  // 指定需要管理的模块
    "example/",
    "packages/*"
  ],

安装依赖

给根项目安装依赖

// yarn 使用 workspace 模式安装 npm 包时必须加 -W 参数
$ yarn add -W -D rollup typescript jest prettier ...

给package安装外部的npm包

// yarn workspace [worksapce name] add [...packages name]
$ yarn workspace @vue/template-explorer add monaco-editor 

给package安装monorepo项目内部的npm包

// yarn workspace [worksapce name] add [...inner packages name]
$ yarn workspace @mini-vue/runtime-dom add @mini-vue/shared@1.0.0 @mini-vue/runtime-core@1.0.0 // 一定要指定正确的版本号,不然会到npm查找包