我在公司的 gitlab 上为作曲家制作了一些私人包。但是当其他项目需要我的私有包时,它被识别为git子模块,所以我无法将它推送到生产环境。
我按照作曲家文档来更改我的项目的 composer.json。
我也尝试了Satis,但它打开了相同的结果---子模块。
当我将包存储在 Github 上时,它运行良好!
这是gitlab的问题吗?
谢谢!
Composer 正在使用 git 克隆您的包,而不是下载它们。当 composer 通过 packagist 从 github 下载包时,它会下载文件的存档 ( .tar.gz
),然后将其解压缩到您的供应商目录中。当它获取你的私有仓库时,它找不到存档,所以它直接用 git 克隆它。这个克隆将有一个.git
目录,就像一个普通的克隆存储库一样。
典型的解决方案是将vendor/
目录添加到您的.gitignore
. 但是,如果您有特殊情况,您可以通过使用 satis创建自己的档案来解决此问题。
从满足文档:
{
"archive": {
"directory": "dist",
"format": "tar",
"prefix-url": "https://amazing.cdn.example.org",
"skip-dev": true
}
}
vendor
如果你这样做,你的包将在安装到目录之前被归档。不会有.git
目录,因此不会被视为子模块。