使用Yarn 2时是否需要将.yarn/cache文件夹推送到GitHub?
首先说明你当前推送缓存文件的原因
你现在的.gitignore中配置了!.yarn/cache,属于反向排除规则,告诉Git不要忽略.yarn/cache目录,所以这个目录下的新增文件自然会被纳入版本控制,随代码一同推送。
是否提交.yarn/cache取决于你使用的Yarn工作流
情况1:当前使用 nodeLinker: node-modules 模式
完全不需要提交该目录到Git仓库,建议直接修改.gitignore删除!.yarn/cache这一行即可:
- 该目录仅作为本地下载依赖的缓存,即使本地缓存丢失,执行
yarn install时会自动从镜像源重新下载对应版本的依赖 - 提交缓存会导致仓库体积快速膨胀,每次升级依赖都会新增大量二进制压缩包文件,拖慢仓库克隆、拉取的速度
情况2:后续切换到Yarn 2+ 零安装(Zero Installs)模式
这种模式是Yarn官方推荐的工作流,无需生成node_modules目录,项目直接读取.yarn/cache内的压缩包运行,此时才需要提交该目录到仓库:
- 所有协作者、CI环境拉取代码后无需执行安装操作,可直接使用依赖
- 能100%保证所有环境的依赖版本完全一致,不会出现“本地能跑线上挂”的依赖差异问题
可选过渡方案
如果暂时不确定后续是否会切换到零安装模式,可以保留.gitignore中的现有配置,执行以下命令让本地Git临时忽略缓存目录的变动,不会将本地缓存提交到仓库:
git update-index --assume-unchanged .yarn/cache/*
后续确定要启用零安装模式时,执行反向命令取消忽略即可:
git update-index --no-assume-unchanged .yarn/cache/*
内容的提问来源于stack exchange,提问作者arunmmanoharan
相关产品推荐
相关产品推荐

