1. 模块化架构下的插件设计
- Yarn Modern 围绕一个精简的核心(@yarnpkg/core)重新设计,大部分实际功能都通过插件实现,甚至连 yarn add、yarn install 本身也是预装插件
- 插件在运行时被 Yarn 加载,可以注入新行为,并能直接使用 Yarn 提供的核心 API(如 @yarnpkg/core),无需在自己的依赖中重复声明
2. 插件可扩展的能力范围
- 新增解析器(resolver):将依赖范围(如 ^1.2.0)转换为完全限定的包引用
- 新增获取器(fetcher):从远程注册表或本地磁盘等数据源获取包数据
- 新增链接器(linker):生成安装所需的文件,例如 PnP 链接器生成 .pnp.cjs,node-modules 链接器生成传统目录结构
- 新增命令与钩子:插件可注册自定义 CLI 命令,并监听安装生命周期中的各类事件(如 afterAllInstalled)
3. 官方插件与社区生态
- 官方插件包括 constraints(跨 workspace 强制 lint 规则)、typescript(自动补充 @types 依赖)、version(monorepo 发布管理)、workspace-tools(workspaces foreach 等命令)、interactive-tools(图形化交互升级)等
- 社区贡献的插件集中维护在 contrib 列表中,使用前应自行审查其质量与安全性
- 编写插件可使用 @yarnpkg/builder 工具将 TypeScript 源码打包为单文件发布