关于 Yarn
Yarn 是一个现代 JavaScript 包管理器,强调工作区支持和零安装模式。通过 Plug'n'Play 技术优化依赖解析,支持复杂的 monorepo 结构。
主要功能
- 01使用 yarn workspaces 管理多包 monorepo 项目
- 02通过 Plug'n'Play 模式实现零安装和快速依赖解析
- 03使用 yarn add 安装包并支持版本管理
适用场景
- 01大型 monorepo 的多包管理和依赖共享
- 02需要零安装部署或快速 CI/CD 流程的项目
- 03复杂的工作区依赖和版本控制需求
安装
选择你的系统或包管理器,复制命令到终端运行。
安装完成后运行yarn --version确认安装成功。
命令示例
常用命令按使用顺序排列。
详细介绍
快速、可靠且安全的依赖项管理。
Yarn 是一款现代化的包管理器,由多个包组成。其创新的架构让一些现有解决方案目前无法实现的功能成为可能:
- Yarn 支持插件;添加插件就像将其加入代码库一样简单
- Yarn 默认支持 Node,但并不局限于此——插件可以添加对其他语言的支持
- Yarn 原生支持工作区,其 CLI 也充分利用了这一点
- Yarn 使用类似 bash 的便携式 shell,让包脚本能够在 Windows、Linux 和 macOS 上通用
- Yarn 首先是一套可通过编程方式使用的 Node API(通过 @yarnpkg/core)
- Yarn 使用 TypeScript 编写,并经过完整的类型检查
我们的支持者
黄金赞助商
|
| 所有环境变量,集中一处管理。不再为散落各处的 API 密钥烦恼,不必费力拼凑自制工具,也无需回避访问控制。借助 Doppler,让团队和服务保持同步。 |
|
| 让你的应用满足企业需求。只需几行代码,即可开始向企业客户销售。借助 WorkOS,几分钟即可添加单点登录(以及更多功能),无需等待数月。 |
| Datadog 已为我们的首席维护者提供赞助一年多。他们还升级了我们的账户,让我们能够使用长期遥测数据(RFC)。 |
|
| SysGears 从 2.x 开发初期就开始赞助开发时间。尤其是,他们的大力投入让 Yarn 2 对 node_modules 安装的支持比以往更好。 |
|
| Netlify 一直是我们网站的托管服务提供商。每当我们遇到问题,他们都会及时提供帮助。他们的实时预览功能对我们的开发流程非常有帮助。 |
| Cloudflare 也是我们长期以来的合作伙伴。虽然我们不再直接镜像 npm registry,但他们仍为我们的网站提供支持,确保网站尽可能快速地交付内容。 |
|
| Algolia 多年来为我们的文档建设做出了很大贡献。他们仍为文档的两个版本提供搜索引擎支持。 |
安装
请参阅安装指南。
迁移
请参阅迁移指南。
文档
文档位于 yarnpkg.com。
API
API 文档位于 yarnpkg.com/api。
当前状态
除了经典的集成测试,我们还每天使用社区所用工具链的最新版本运行 Yarn,以防万一。一切都应该是绿色的!
贡献
请参阅贡献指南。
构建自己的软件包
克隆此仓库,然后运行以下命令:
yarn build:cli
工作原理
构建 CLI 后,全局 yarn 会立即开始反映本地更改。这是因为 Yarn 会读取此仓库的 .yarnrc.yml 中的 yarnPath 设置;该设置已配置为在新构建的 CLI 可用时使用它。
开箱即用!
请注意,无需运行其他命令!由于我们的依赖项已检入仓库(位于 .yarn/cache 目录中),你甚至不需要运行 yarn install。克隆项目后,一切就能立即正常运行,并且保证十年后仍可继续使用 🙂
Yarn 插件
默认插件
这些插件通常会随 Yarn 一起打包。使用它们无需进行任何特殊操作。
- plugin-compat 包含一些内置补丁,用于改进对 PnP 的支持。
- plugin-constraints 为 Yarn 添加对约束的支持。
- plugin-dlx 为
yarn dlx命令添加支持。 - plugin-essentials 添加各种包管理器必备的命令(add、remove 等)。
- plugin-exec 添加在依赖项中使用
exec:协议的支持。 - plugin-file 添加在依赖项中使用
file:协议的支持。 - plugin-git 添加从 Git 仓库克隆包的支持。
- plugin-github 添加使用 GitHub 引用作为依赖项的支持。此插件不使用 git。
- plugin-http 添加使用直接 URL 引用作为依赖项的支持(仅限 tgz 归档文件)。
- plugin-init 为
yarn init命令添加支持。 - plugin-interactive-tools 为各种交互式命令添加支持(
yarn upgrade-interactive)。 - plugin-link 添加将
link:和portal:引用用作依赖项的支持。 - plugin-nm 添加通过
node_modules文件夹安装包的支持。 - plugin-npm 添加对使用 semver 范围的依赖项的支持,并从类似 npm 的注册表解析它们。
- plugin-npm-cli 添加对 npm 专属命令的支持(
yarn npm login、yarn npm publish等)。 - plugin-pack 为
yarn pack命令添加支持。 - plugin-patch 添加对
patch:协议的支持。 - plugin-pnp 添加通过 Plug'n'Play 规范安装 JavaScript 依赖项的支持。
- plugin-stage 为
yarn stage命令添加支持。 - plugin-typescript 改进使用 TypeScript 时的用户体验。
- plugin-version 添加对新发布工作流的支持。
- plugin-workspace-tools 为
yarn workspaces foreach命令添加支持。
第三方插件
第三方实体也可以开发插件。要在应用中使用这些插件,只需在调用 yarn plugin import 时指定完整的插件 URL。请注意,目前不会从 npm 注册表获取插件——它们必须以单个 JavaScript 文件的形式分发。
创建新插件
如需创建自己的插件,请参阅文档。
通用包
以下包具有通用性,可用于多种用途(包括实现其他包管理器,但不仅限于此):
- @yarnpkg/core 支持任何应用以编程方式操作项目。
- @yarnpkg/fslib 是一组工具,通过类型安全的原语抽象文件系统。
- @yarnpkg/libzip 包含编译为 WebAssembly 的 zlib+libzip 绑定。
- @yarnpkg/nm 包含
node_modules树构建器和提升器。 - @yarnpkg/parsers 可用于解析 @yarnpkg/shell 使用的语言。
- @yarnpkg/pnp 可用于生成兼容 Plug'n'Play 的钩子。
- @yarnpkg/pnpify 是一个 CLI 工具,可为各种工具透明地添加 PnP 支持。
- @yarnpkg/sdks 是一个 CLI 工具,用于生成 PnP Editor SDKs。
- @yarnpkg/shell 是一个可移植的类 bash shell 解释器。
Yarn 包
以下包供 Yarn 自身使用,其他应用可能用不上:
- @yarnpkg/builder 包含一个 CLI 工具,用于打包 berry 及其插件。
- @yarnpkg/cli 是一个基于 @yarnpkg/core 构建的 CLI 入口点。