在git

时间:2017-09-20 05:59:16

标签: node.js git yarnpkg

我们的CI中有一个奇怪的依赖,要求我们的git repo有一个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
  3. 时,都不会中断

    我知道实际的答案是修复我们的CI,但这对我们来说现在有点超出了范围。

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:0)

也许你可以阻止删除"占位符"如果从运行yarn install的用户的文件中删除写入权限,则为file。但如果无法清除目录,yarn install可能会失败。