我是否可以将 packagist.org 的依赖项与我自己的 Composer Satis 安装同步或镜像?

我们有自己的 Satis 存储库,我们可以在那里存储我们自己的依赖项。这工作正常。

但是,如果开发人员使用的软件包不在我们自己的存储库中,那么Composer将通过 packagist.org(作为回退)从GitHub获取它。

但我们不想依赖 packagist.org。所有依赖项都应从我们自己的存储库下载。

我们想知道的是,如果可能的话,Satis从Packagist下载一个软件包,如果它还没有本地可用,然后存储它并自动将其添加到Satis自己的存储库 。

这样,我们就不必手动将依赖项添加到 Satis 存储库。


答案 1

萨蒂斯现在支持这一点。

只需按照 Satis 设置说明进行操作,然后将以下内容添加到您的配置文件(默认情况下名为 satis.json)中即可。更新前缀 url 并根据需要要求。

{
    "repositories": [
        { "type": "composer", "url": "https://packagist.org" }
    ],
    "require-dependencies": true,
    "require": {
        {{your application dependencies from composer.json}}
    },
    "archive": {
        "directory": "dist",
        "prefix-url": "{{your server}}",
        "skip-dev": true
    }
}

然后,您可以像往常一样创建您的 Satis 存储库:

php bin/satis build <configuration file> <build dir>

现在,您的 Satis 存储库将满足应用程序的所有依赖项。


注意:第一次运行可能需要一段时间。后续运行要快得多。另外,请注意,Satis 使用 /tmp 作为其缓存。在 /tmp 由 tmpfs 支持的小型内存系统上,如果具有较大的依赖关系树,则可能需要增加 /tmp 的可用空间。

您可能还希望禁用项目 composer.json 文件中的 Packagist 存储库,以强制所有依赖项都来自您的 Satis 存储库。为此,请添加:

{
    "repositories": [
        {
            "packagist": false
        }
    ]
}

到项目的 composer.json。


答案 2

您现在可以使用代理来实现此目的。最有可能的是,这种能力将被添加到满足本身。


推荐