使用Yarn Berry实现Zero-Installs时,是否需将unplugged目录纳入Git仓库?
Yarn Berry Zero-Installs:是否需要将unplugged目录纳入Git仓库?
问题背景
在Yarn Berry的Zero-Installs模式下,原本克隆仓库后应该直接执行yarn start就能启动项目,但因为.yarn/unplugged目录被Git忽略,导致启动时出现如下报错:
$ yarn start C:\Users\com\Desktop\zero3\project\.pnp.cjs:25991 Error.captureStackTrace(firstError); ^ Error: Required unplugged package missing from disk. This may happen when switching branches without running unplugged packages must be fully materialized on disk to work). Missing package: open@npm:8.4.0 Expected package location: C:\Users\com\Desktop\zero3\project\.yarn\unplugged\open-npm-8.4.0-df63cfe5dules\open\
当前.gitignore的相关配置如下:
.yarn/* !.yarn/cache !.yarn/patches !.yarn/plugins !.yarn/releases !.yarn/sdks !.yarn/versions # !.yarn/unplugged
现在需要确认:使用Yarn Berry实现Zero-Installs时,是否应该将unplugged目录纳入Git仓库?
回答
是的,必须将.yarn/unplugged目录加入Git仓库,这才是Zero-Installs的正确实现方式:
- Unplugged目录里放的是无法通过PnP机制直接加载的包——这类包要么包含二进制可执行文件,要么需要读取本地物理文件,只能以完整文件的形式存放在磁盘上,没法像普通缓存包那样靠链接引用。
- Zero-Installs的核心就是让克隆仓库后不用跑
yarn install就能直接运行项目,unplugged目录是实现这个目标的必要部分,缺失它就会出现你遇到的依赖找不到的报错。
具体改法很简单,把.gitignore里注释掉的那行取消注释:
!.yarn/unplugged
提交这个修改后,其他开发者克隆仓库时就能拿到完整的unplugged目录,直接执行yarn start就能启动项目,不用额外执行安装命令。
内容的提问来源于stack exchange,提问作者loare
相关产品推荐
相关产品推荐

