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

时间:2019-10-24 23:38:07

标签: javascript node.js git yarnpkg

纱线包含一个可选的"Plug'n'Play" feature,该regex demo可将node_modules从项目目录中移出。这样做会创建一个.pnp.js文件,其中引用了硬盘驱动器上的各种依赖项路径。

该文件是自动生成的,有数千行,并且似乎引用了运行yarn install的计算机专用的路径

.pnp.js是否打算与其余代码一起提交?尽管文件似乎无用提交,但我似乎找不到任何有关此的信息。什么是最佳实践,为什么?

2 个答案:

答案 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 -------