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

Nib*_*orb 16 php dependency-management composer-php satis packagist

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

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

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

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

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

小智 15

Satis现在支持这一点.

只需按照Satis设置说明操作,将以下内容添加到配置文件中(默认情况下名为satisf.json).根据需要更新prefix-url和require.

{
    "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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

php bin/satis build <configuration file> <build dir>
Run Code Online (Sandbox Code Playgroud)

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


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

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

{
    "repositories": [
        {
            "packagist": false
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

到你的项目的composer.json.


Sel*_*aek 6

您现在可以使用代理来实现此目的.最有可能的是,这种能力将被添加到令人满意的状态.

  • "注意:此项目不再维护.由于[satisf](https://github.com/composer/satis)现在支持类似功能,您应该使用[satisf](https://github.com/composer相反." (2认同)