下面是我的NextJS monorepo应用程序的状态:
- monorepo,通过yarn工作区管理多个私有包
develop
是默认分支,测试环境,在main
之前有多个提交main
分支的提交更少,并且只有那些准备好用于暂存环境的提交- 对
main
的提交通过PR推送,并从develop
中挑选 - 这些私有monorepo包的
develop
版本控制全部为绿色(yarn version check
命令) - 由于cherry-picking/reverts/squash/等原因,
main
上的PR级和分支级禁用版本检查。yarn version check
在main
分支上失败,出现以下错误:
yarn version check
➤ YN0001: UsageError: Your current branch contains multiple versioning files; this isn't supported:
- /Users/tbutcaru/Projects/my-nextjs-app/.yarn/versions/00648a82.yml
- /Users/tbutcaru/Projects/my-nextjs-app/.yarn/versions/009a6542.yml
- /Users/tbutcaru/Projects/my-nextjs-app/.yarn/versions/018f7b67.yml
- /Users/tbutcaru/Projects/my-nextjs-app/.yarn/versions/0197a805.yml
at h (/Users/tbutcaru/Projects/my-nextjs-app/.yarn/plugins/@yarnpkg/plugin-version.cjs:5:3539)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
....
- 提到的
.yarn/versions/...
文件不存在于我的main
分支.
相同的问题here和here-关闭,无解决方案。我已经试过其他人在提到的链接中通过评论说的话了。
我试过了:
yarn version apply --all
yarn version check --interactive
- 升级到最新的yarn 3.4.0(现在使用2.4.2)
- 删除所有
.yarn/versions
文件dir + yarn.lock并重新安装所有软件包 - 手动提升所有私有软件包版本
- 将
.yarn/versions
文件目录从develop
复制到main
- 我在
.yarnrc.yml
文件中添加了changesetIgnorePatterns: - '.yarn/**/*'
,我不再得到上面的错误,而是下面的YN0000: @my-nextjs-app/shared-components@workspace:packages/shared-components has been modified but doesn't have a release strategy attached
,我已经运行了yarn version check --interactive
,所以包附带了一个发布策略,但yarn version check
仍然失败。
......以上都没有奏效。
如何解决“多个版本控制文件”问题?或者,至少,我如何在main
分支上完全重置/重新初始化yarn工作区包版本?
谢谢大家!
1条答案
按热度按时间wnvonmuf1#
我没有找到任何解决方案,我的问题与初始设置中描述的原始职位,但我设法修复
yarn version check --interactive
与.yarnrc.yml
配置更改!我将尝试提供更多关于问题和解决方案的背景信息。
最近,我将我的repo的默认分支从
develop
更改为main
,这就是我如何结束上面的问题。默认分支开关背后的想法是移动到main
并永久存档develop
,这就创建了一个删除所有与develop
相关的代码库和配置的任务。因此,在从我的repo中删除任何
develop
分支剩余部分时,我已经达到了.yarnrc.yml
,它具有以下配置:...将其更改为:
...导致
yarn version check --interactive
和yarn version check
工作!