【问题标题】:Track yarn's node_modules directory properly in git在 git 中正确跟踪 yarn 的 node_modules 目录
【发布时间】:2023-12-03 11:33:01
【问题描述】:

我们的 CI 中有一个奇怪的依赖项,它要求我们的 git 存储库有一个 node_modules 目录(但显然不是其中的包)。

由于 git 不跟踪空目录,我们实现它的方法是在里面有一个.gitignore

node_modules/
    .gitignore

使用以下配置

*
!.gitignore

这可行,直到我们使用 yarn install 重新安装我们的模块,这将清除目录中的所有内容,包括我们的 .gitignore 文件,从而弄乱存储库。

我们还可以添加如下内容:

node_modules/
    .empty
.gitignore

.gitignore:

/node_modules/*
!/node_modules/.empty

yarn install 仍会删除该文件,以及对node_modules 目录的任何跟踪。

我们的问题是,我们缺少什么可以:

  1. 允许我们在 git 中跟踪 node_modules/
  2. 无论何时我们yarn install都不会中断

我知道实际的答案是修复我们的 CI,但这有点超出我们目前的范围。

【问题讨论】:

    标签: node.js git yarnpkg


    【解决方案1】:

    创建一个post install 脚本,在node_modules 中重新创建.empty 文件。

    更具体地说,您可以在 package.json 中添加某些脚本,这些脚本在调用 install 后运行。在这种情况下:

    {
      // ...
      "scripts": {
        // ...
        "postinstall": "touch node_modules/.empty"
      }
      // ...
    }
    

    安装完成后,应确保node_modules 中有一个名为.empty 的文件。

    【讨论】:

      【解决方案2】:

      如果您从文件中删除运行yarn install 的用户的写入权限,也许您可​​以防止删除“占位符”文件。但是如果无法清除目录,yarn install 可能会失败。

      【讨论】:

        最近更新 更多