Composer不会从缓存加载存储库包

时间:2015-02-20 10:14:13

标签: json composer-php

当我从干净的结帐安装我的应用程序时,它总是从我的本地存储库中获取我的包,而不是像远程包那样从缓存中安装。

我的作曲家档案:

{
    "name": "app/name",
    "description": "Desc",
    "homepage": "http://homepage.com",
    "repositories": [
        {
            "type": "composer",
            "url": "http://packages.localrepository.com/",
            "options": {
                "http": {
                    "proxy": ""
                 }
            }
       }
    ],
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.*",
        "guzzlehttp/guzzle": "4.*",
        "local/health-check": "1.*",
        "local/file-upload": "1.*",
        "rediska/rediska": "dev-master"
    }
}

这会产生:

 [exec]   - Installing guzzle/guzzle (v3.9.2)
 [exec]     Loading from cache
 [exec]
 [exec]   - Installing local/health-check (1.2.0)
 [exec]     Cloning f62651a1e2328a03ab7fd3fa8f84239ce7ee3a7c

这将适应每次执行干净检查的当前构建过程。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

远程软件包托管在Github或其他托管服务上,提供下载标记版本的ZIP或TGZ文件的方法。 Composer知道这些服务的API,并尝试在适当时下载ZIP(如果选择不当,您可以尝试使用--prefer-dist强制它。)

我认为你自己的托管代码不在Github上。因此,如果Composer不知道从哪里获取ZIP,则唯一的另一种方法是克隆存储库,无论命令行说什么(另一方面,您可以尝试使用{{1}强制克隆})。

请注意,这两个选项都不能保证任何内容 - 如果Composer无法下载它将克隆的ZIP - 如果它无法克隆,例如当该软件包的元数据仅提及ZIP下载但没有存储库时,它将下载ZIP。

从一种方法切换到另一种方法通常需要删除--prefer-source文件夹以及vendor文件,然后再次运行Composer。这将作为更新操作,因此请注意,如果它破坏了您的依赖关系,您必须处理此问题(即您依赖于分支名称,例如" dev-master"而不是标记版本)。