3

我在公司的 gitlab 上为作曲家制作了一些私人包。但是当其他项目需要我的私有包时,它被识别为git子模块,所以我无法将它推送到生产环境。

我按照作曲家文档来更改我的项目的 composer.json。
我也尝试了Satis,但它打开了相同的结果---子模块。

当我将包存储在 Github 上时,它运行良好!

这是gitlab的问题吗?
谢谢!

4

1 回答 1

1

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目录,因此不会被视为子模块。

于 2014-11-11T14:53:34.673 回答