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