mattketmo/stone

Composer 仓库的代理

dev-master 2013-09-13 07:24 UTC

This package is auto-updated.

Last update: 2024-09-05 19:47:34 UTC


README

此项目已不再维护。顺便说一句,你知道吗?Composer 的 dist 包会自动缓存

Stone 是用于 Composer 的仓库代理。它会创建一个包含你想要镜像的所有包的本地仓库。然后你可以使用 Composer 的全局配置从该本地仓库获取包,而不是从 Packagist 获取。

安装

下载源码

git clone git://github.com/mattketmo/stone.git

确保您可以在 php.ini 中编译 PHAR 文件

[Phar]
; https://php.ac.cn/phar.readonly
phar.readonly = Off

将其编译为 PHAR 文件

./bin/compile

现在建议您使用 chmod +x stone.phar 并将其添加到您的 $PATH 中,以便在需要的地方使用它。

您可以使用 自动init 命令初始化本地仓库

stone.phar init

或者您可以通过编辑全局 Composer 配置(Unix 系统上的 ~/.composer/config.json手动 完成

{
    "repositories": [
        {
            "type": "composer",
            "url": "file:///<HOME>/.composer/stone"
        }
    ]
}

并创建一个空的 ~/.composer/stone/packages.json

{
    "packages": { }
}

使用方法

要镜像任何来自 composer.json 文件的包,只需运行

stone.phar mirror /path/to/composer.json

请确保定期更新您的本地包,通过运行

stone.phar update

这就完了!Composer 将现在使用您所有镜像的包,而不是从 Packagist 获取它们。

已知问题

  • Composer 不会识别分支别名(例如,"doctrine/common": "2.3.x-dev" 将从 GitHub 获取,而不是本地仓库)

  • 包的替换行为奇怪。例如,如果您已镜像 "symfony/symfony",则要求 "symfony/console" 将会获取 "symfony/symfony"(及其所有依赖项),而不是仅仅的 "子树"

  • 目前,它对包之间的依赖关系完全无动于衷,因此它将 下载您的 Composer 所需的依赖项。您可以在 ~/.composer 文件夹内创建一个 dummy.json 文件,并放置您想要镜像的所有包