我们的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
目录的任何跟踪。
我们的问题是,我们有什么遗漏可以:
node_modules/
yarn install
我知道实际的答案是修复我们的CI,但这对我们来说现在有点超出了范围。
答案 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
可能会失败。