dar*_*ylp 19 javascript git node.js yarnpkg
Yarn 包括一个可选的“即插即用”功能,该功能移出node_modules
项目目录。这样做时,它会创建一个.pnp.js
文件,其中包含对硬盘驱动器上各种依赖路径的引用。
该文件是自动生成的,长达数千行,并且似乎引用了特定于运行yarn install
.
是否.pnp.js
意味着与其余代码一起提交?尽管该文件似乎无用,但我似乎无法找到有关此的任何信息。什么是最佳实践,为什么?
小智 30
我发现Arcanis(Yarn 的主要维护者)在一个问题上的评论询问了.gitignore
. 它可能会回答您的问题:
.yarn/plugins
并.yarn/releases
包含当前存储库中使用的 Yarn 版本(由 定义yarn set version
)。您将希望保持它们的版本(这可以防止潜在问题,例如,如果两个工程师使用具有不同功能的不同 Yarn 版本)。
.yarn/unplugged
应该总是被忽略,因为它可能包含本机构建
.yarn/build-state.yml
也应该被忽略,因为它包含构建信息
- 如果由于某种原因你版本
unplugged
,保留build-state
也是有意义的
.yarn/cache
可能会被忽略,但您需要运行yarn install
以重新生成它
- 版本控制它解锁了我们所说的零安装——虽然它是可选的
.pnp.js
(并且可能.pnp.data.json
)与缓存在同一条船上。如果您将缓存保留在您的存储库中,请将其添加到您的存储库中,否则将其忽略。
yarn.lock
应该始终存储在您的存储库中(即使您开发了一个库)所以总结一下:
如果您使用零安装:
Run Code Online (Sandbox Code Playgroud).yarn/unplugged .yarn/build-state.yml
如果您不使用零安装:
Run Code Online (Sandbox Code Playgroud).yarn/* !.yarn/releases !.yarn/plugins .pnp.*
正如一位评论者指出的,官方 .gitignore 建议在这里,还有精彩的评论。我唯一的批评是他们在那里展示的方式,我认为他们应该将常见的方法合并为一种,然后将零安装与非零安装的特殊情况分开。这就是我的方法。但请再次注意该文章,因为其中一些(例如.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 -------
Run Code Online (Sandbox Code Playgroud)