2015-02-20 4 views
0

Когда я устанавливаю свое приложение из чистой проверки, он всегда захватывает мои пакеты из моего локального репозитория, а не устанавливает из кеша, как удаленные пакеты.Композитор не загружает пакеты репозитория из кеша

Мой композитор файла:

{ 
    "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 

Это было бы приспособить текущий процесс сборки, что делает чистое извлечение каждый раз. Есть идеи?

ответ

2

Удаленные пакеты размещены на Github или других сервисах хостинга, которые предоставляют средства для загрузки ZIP или TGZ-файлов с тегами. Composer знает API этих сервисов и пытается загрузить ZIP по необходимости (и вы можете попытаться заставить его, используя --prefer-dist, если он выбрал плохо).

Ваш собственный размещенный код не включен в Github, я полагаю. Поэтому, если Composer не знает, где получить ZIP, единственный способ - клонировать репозиторий, независимо от того, что говорит командная строка (с другой стороны, вы можете попытаться заставить клонирование с помощью --prefer-source).

Обратите внимание, что ни один из этих двух вариантов не гарантирует ничего - если Composer не может загрузить ZIP, он будет клонировать, если он не может клонировать, например. когда метаданные этого пакета упоминают только ZIP-файлы, но без репозитория, он будет загружать ZIP.

При переходе от одного метода к другому обычно требуется удалить папку vendor, а также файл composer.lock, а затем снова запустить Composer. Это будет действовать как операция обновления, поэтому следует предупредить, что вам придется иметь дело с этим, если он разрушает ваши зависимости (т. Е. Вы полагаетесь на имена ветвей, например, «dev-master», а не на тегированные версии).

Смежные вопросы