yarn vs npm
yarn是由Facebook、Google、Exponent和Tilde联合推出的一个新的JS包管理工具,为了弥补npm的不足:
- npm安转包的速度不够快,拉取的包版本可能不同
- npm允许在安装包时执行代码,存在安全隐患
yarn 与 npm 命令对比
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查找包