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

时间:2012-08-01 12:35:02

标签: php dependency-management composer-php packagist satis

我们有自己的Satis存储库,我们可以在那里存储我们自己的依赖项。这很好。

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

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

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

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

2 个答案:

答案 0 :(得分:15)

Satis现在支持这一点。

只需按照Satis setup instructions并将以下内容添加到配置文件中(默认情况下名为satisf.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文件中的disable the Packagist repository强制所有依赖项都来自您的Satis存储库。为此,请添加:

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

到你的项目的composer.json。

答案 1 :(得分:6)

您现在可以使用broker来实现此目的。很可能这种能力将被添加到令人满意的地方。