我是要提交 yarn 的 `.pnp.js` 文件吗?

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应该始终存储在您的存储库中(即使您开发了一个库

所以总结一下:

如果您使用零安装:

.yarn/unplugged
.yarn/build-state.yml
Run Code Online (Sandbox Code Playgroud)

如果您不使用零安装:

.yarn/*
!.yarn/releases
!.yarn/plugins
.pnp.*
Run Code Online (Sandbox Code Playgroud)

  • 以下是[官方 .gitignore 建议](https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored) (3认同)

Nic*_*sen 6

正如一位评论者指出的,官方 .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)