纱线包含一个可选的"Plug'n'Play" feature,该regex demo可将node_modules
从项目目录中移出。这样做会创建一个.pnp.js
文件,其中引用了硬盘驱动器上的各种依赖项路径。
该文件是自动生成的,有数千行,并且似乎引用了运行yarn install
的计算机专用的路径 。
.pnp.js
是否打算与其余代码一起提交?尽管文件似乎无用提交,但我似乎找不到任何有关此的信息。什么是最佳实践,为什么?
答案 0 :(得分:2)
我发现this comment by Arcanis(Yarn的主要维护者)在一个问题上询问.gitignore
中应包含什么内容。它可能会回答您的问题:
.yarn/plugins
和.yarn/releases
包含当前存储库(由yarn set version
定义)中使用的Yarn版本。您将需要对它们进行版本控制(例如,如果两名工程师使用具有不同功能的不同Yarn版本,则可以避免潜在问题)。
.yarn/unplugged
应该总是被忽略,因为它可能包含本机版本
.yarn/build-state.yml
也应该被忽略,因为它包含构建信息
- 如果出于某些原因您版本
unplugged
,则也最好保留build-state
.yarn/cache
可能会被忽略,但是您需要运行yarn install
来重新生成它
- 版本化它可以解锁我们所谓的Zero-Installs-尽管它是可选的
.pnp.js
(可能还有.pnp.data.json
)与缓存位于同一条船上。如果将缓存保留在存储库中,则将其添加到存储库中,否则将其忽略。
yarn.lock
应该始终存储在您的存储库(even if you develop a library)中所以总结一下:
如果您使用的是零安装:
.yarn/unplugged .yarn/build-state.yml
如果您不使用“零安装”:
.yarn/* !.yarn/releases !.yarn/plugins .pnp.*
答案 1 :(得分:1)
正如其中一位评论者指出的那样,the official .gitignore recommendations are here 以及出色的评论。我唯一的批评是他们在那里展示的方式,我认为他们应该将常见的方式合二为一,然后将零安装与不安装的特殊情况分开。这就是我如何拥有它。但同样,请注意该文章,因为其中一些(例如 .yarn/sdk
)是可选添加或不添加的。
# ------- yarn -------
# see excellent notes at: https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
# Also: `yarn.lock` and `.yarnrc.yml` (or it's older counterpart .yarnrc) "should always be stored in your repo"
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
## --> ADD if using zero-install, otherwise do NOT:
#!.yarn/cache
## --> ELSE ADD if NOT using yarn's zero-install:
.pnp.*
# ------- end yarn -------