Node.js 履带纱&x27;s node_modules目录在git中是否正确
我们的CI中有一个奇怪的依赖项,它要求我们的git repo有一个Node.js 履带纱&x27;s node_modules目录在git中是否正确,node.js,git,yarnpkg,Node.js,Git,Yarnpkg,我们的CI中有一个奇怪的依赖项,它要求我们的git repo有一个node\u modules目录(但显然不是其中的包) 由于git不跟踪空目录,因此我们实现它的方法是在内部有一个.gitignore: node_modules/ .gitignore 使用以下配置 * !.gitignore 这是可行的,直到我们使用warn install重新安装模块,这将清除目录中的所有内容,包括我们的.gitignore文件,从而破坏存储库 我们还可以添加如下内容: node_modules/
node\u modules
目录(但显然不是其中的包)
由于git不跟踪空目录,因此我们实现它的方法是在内部有一个.gitignore
:
node_modules/
.gitignore
使用以下配置
*
!.gitignore
这是可行的,直到我们使用warn install
重新安装模块,这将清除目录中的所有内容,包括我们的.gitignore
文件,从而破坏存储库
我们还可以添加如下内容:
node_modules/
.empty
.gitignore
使用.gitignore
:
/node\u模块/*
!/节点\ u模块/.empty
但是warn install
仍将删除该文件以及对node\u模块
目录的任何跟踪
我们的问题是,我们是否遗漏了能够:
节点\u模块/
纱线安装
我知道实际的解决办法是修复我们的CI,但这目前对我们来说有点超出范围。如果您从运行
纱线安装的用户的文件中删除写入权限,您可能可以阻止删除“占位符”文件。但如果无法清除目录,则可能warn install
会失败。创建一个post install
脚本,在节点模块中重新创建.empty
文件
更具体地说,您可以在调用install后运行的包中添加某些脚本。在这种情况下:
{
// ...
"scripts": {
// ...
"postinstall": "touch node_modules/.empty"
}
// ...
}
安装完成后,应确保节点\u模块
中有一个名为.empty的文件