2013-04-24 2 views
9

Когда я бегуОткуда возникают пакеты PHP Composer?

$ composer.phar install 

где же пакеты, которые получают установленные взялось?

Я понимаю, что Packagist является репозиторием по умолчанию для пакетов PHP, а в нем нет другого пакета в composer.json, здесь композитор будет искать пакеты.

Однако, я не понимаю, как взаимодействует Композитор и Пакгастик.

  • ли Composer скачать файлы прямо из packagist.org

  • Или композитор получить мерзавец/SVN/HG репозитория ссылку из packagist и загрузить файлы из хранилища напрямую?

  • Или что-то еще?

+3

packagist хранит ссылки на репозитории, и именно там они загружаются из –

ответ

10

Это зависит от содержания вашего файла composer.json.

Например, если ваш composer.json содержал просто

{ 
    "require": { 
     "phpunit/phpunit": "3.8.*@dev" 
    } 
} 

тогда композитор ищет packagist, и находит PHPUnit здесь:

https://packagist.org/packages/phpunit/phpunit

который говорит композитор загружать PHPUnit здесь:

https://github.com/sebastianbergmann/phpunit.git

Если вместо того, чтобы ваш composer.json содержал

{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "http://github.com/sebastianbergmann/phpunit" 
     } 
    ], 
    "require": { 
     "phpunit/phpunit": "3.8.*@dev" 
    } 
} 

тогда композитор не будет смотреть на packagist, но перейти непосредственно к GitHub, чтобы скачать репозиторий.

Пакеты, зарегистрированные на Packagist являются обычно «авторитетный» версия пакета (не вилкой), но я нашел несколько случаев, когда это НЕ дело, так что вы должны проверить его, чтобы убедиться, вы тянете пакет, который вы ожидаете.

1

Packagist.org предлагает пользователям зарегистрировать свое программное обеспечение там, указав Packagist, чтобы прочитать их файл composer.json, который публикуется где-то в Интернете.

Обычным случаем были бы некоторые из обычных хостеров с открытым исходным кодом, такие как github, что делает его очень легким, потому что композитор может справиться с таким git-репо сразу. Тем не менее, вы можете разместить собственный репозиторий git или svn или hg или даже публиковать готовые ZIP или TGZ-файлы для каждой версии программного обеспечения.

Композитор загружается непосредственно из источника, например. Packagist знает только этот источник и сообщает вашему экземпляру композитора, куда идти. Он делает это, загружая кучу json-файлов с Packagist.org, которые имеют всю информацию. Это проще, чем узнать, где размещаются библиотеки, которые вы хотите разместить, и добавить эту информацию в качестве записи репозитория в ваш локальный файл composer.json. :)

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