在 yarn ("berry") 的下一个版本中,手册指出应该只提交创建的目录.yarn
,但如果您使用 yarn 的多版本设置,则该目录包含releases/yarn-berry.js
似乎是yarn,占用了2MB多的磁盘。
这似乎真的是错误的——我为什么要向 git 提交一个包管理器,只是为了让它工作?
在 yarn ("berry") 的下一个版本中,手册指出应该只提交创建的目录.yarn
,但如果您使用 yarn 的多版本设置,则该目录包含releases/yarn-berry.js
似乎是yarn,占用了2MB多的磁盘。
这似乎真的是错误的——我为什么要向 git 提交一个包管理器,只是为了让它工作?
Yarn 开发人员在“安装文档”中的“关于全局安装”一节中解释了这样做的理由:
在您的系统中使用单个包管理器一直是个问题。为了稳定,安装需要在不同环境中使用相同的包管理器版本运行,否则我们可能会在版本之间引入意外的破坏性更改 - 毕竟,这就是首先引入 lockfile 概念的原因!从某种意义上说,Yarn 是您的第一个项目依赖项,因此“锁定它”也应该是有意义的。
一旦 Yarn 被跟踪并“锁定”为每个项目的依赖项,如果您遵循 Yarn 2 的零安装策略,它最终会被提交给 Git ,其基本原理在此处解释。
我是 Yarn 的新手,但我花了数年时间从事 devops,帮助开发人员弄清楚为什么他们的代码有时会在团队的一半笔记本电脑上正确构建,而在另一半笔记本电脑上却不能正确构建,或者在继续运行时突然开始无法在 CI 中构建到别处工作。npm
考虑到 Node 不断升级,试图在公司的每台计算机和代码库中保持版本一致基本上是不可能的,但是将每个项目锁定到它自己的特定 Yarn 版本——通过致力于 Git,可以保证在该项目的每次结帐时都可用——解决了这个问题。
我为那些不想将 Yarn 2+ 二进制文件提交到他们的 git 存储库中的人编写了一个小工具,同时仍然受益于每个项目的 Yarn 版本。如果您已经在项目中配置了 Yarn 2+,只是不想提交它,您可以运行:
yarn dlx pinyarn
此命令将生成.pinyarn.js
(4KB) 您应该提交的文件。.pinyarn.js
将包含内部 URL,用于从官方 Yarn Berry GitHub 存储库下载 Yarn 2+ 及其插件。.pinyarn.js
如果尚未下载,将从这些 URL 下载二进制文件和插件。
您还可以通过以下方式指定所需的 Yarn 2+ 版本:
yarn dlx pinyarn 3
- 最新发布的 Yarn 3 版本,或
yarn dlx pinyarn 2.2.2
- 版本 2.2.2,或
yarn dlx master
- 来自最新来源的版本,或
yarn dlx 1638
- 来自拉取请求 1638 的版本
pinyarn
GitHub 上
的工具仓库: https ://github.com/sysgears/pinyarn
官方文档提到了应该忽略什么以及应该提交什么。我认为它可以解决这个问题。 https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored