Yarn 进阶指南
目录
1. Yarn 的工作原理
Yarn 通过并行化操作和缓存机制,显著提高了依赖安装的速度。它会创建一个 yarn.lock
文件,记录确切的依赖版本,确保在不同环境中安装相同的依赖。
2. Yarn Workspaces
2.1 什么是Yarn Workspaces
Yarn Workspaces 是 Yarn 提供的一种用于管理多个包(package)在单个代码库(monorepo)中的工具。它允许你共享依赖,减少磁盘空间占用,并加快安装速度。
2.2 创建Yarn Workspaces
在项目的 package.json
文件中添加以下配置:
{
"private": true,
"workspaces": [
"packages/*"
]
}
然后,在 packages
目录下创建子包:
mkdir -p packages/package-1
cd packages/package-1
yarn init -y
这样,你的项目结构就会像这样:
/project-root
/packages
/package-1
/package-2
package.json
yarn.lock
运行 yarn install
,Yarn 将自动安装所有子包的依赖,并共享相同的依赖。
3. 高级依赖管理
3.1 依赖解析策略
Yarn 提供了多种依赖解析策略,你可以通过 .yarnrc
文件进行配置。例如,使用 node-modules
解析策略:
yarn config set nodeLinker 'node-modules'
3.2 Yarn Resolutions
Yarn Resolutions 允许你强制指定项目中所有包使用特定版本的依赖。在 package.json
中添加以下配置:
{
"resolutions": {
"package-name": "version"
}
}
例如,强制所有包使用 lodash
的特定版本:
{
"resolutions": {
"lodash": "4.17.20"
}
}
4. Yarn 脚本和任务管理
4.1 创建和运行脚本
在 package.json
中定义自定义脚本:
{
"scripts": {
"build": "webpack --config webpack.config.js",
"test": "jest"
}
}
运行脚本:
yarn run build
yarn run test
4.2 Yarn 命令的组合使用
你可以组合多个 Yarn 命令来实现复杂任务。例如,先清理构建目录,再运行构建脚本:
yarn run clean && yarn run build
5. 性能优化
5.1 离线模式
Yarn 的离线模式允许你在没有网络连接的情况下安装依赖。首先运行一次 yarn install
来缓存依赖,然后使用以下命令启用离线模式:
yarn config set yarn-offline-mirror "./offline-cache"
yarn config set enable-offline-mirror true
5.2 Zero Install
Zero Install 是一种无需运行 yarn install
的依赖管理方式。将 .yarn
目录和 yarn.lock
文件提交到版本控制系统中,使得项目克隆后即可使用。
yarn install --immutable
6. 插件系统
6.1 安装和使用插件
Yarn 2.x 及以上版本支持插件系统。你可以使用以下命令安装插件:
yarn plugin import [plugin-name]
例如,安装交互式工具插件:
yarn plugin import interactive-tools
6.2 常用插件介绍
- interactive-tools:提供交互式的命令行工具。
- workspace-tools:增强 Workspaces 的功能。
- typescript:支持 TypeScript 项目。
7. 总结
通过本指南,你已经了解了 Yarn 的进阶用法,包括 Workspaces 的使用、高级依赖管理、脚本和任务管理、性能优化以及插件系统。希望这些内容能够帮助你更高效地管理和构建你的 JavaScript 项目。