Composer : полезные команды |
Разместил несколько наиболее применяемых и полезных команд, которые нужны каждому Composer-новичку Установка пакета Добавление гит-пакета heartcode/CanvasLoader, который не размещен на сайте packagist.org 1. нужно в файл composer.json добавить: "repositories":[ ... тут могут быть уже существующие репозитории, а ниже прописываем новый { "type":"package", "package":{ "name":"heartcode/CanvasLoader", "version":"1.2.3", "source":{ "type":"git", "url":"http://github.com/heartcode/CanvasLoader", "reference":"master" } } } ], заметка: в reference можно указать имя ветки, коммит или даже тэг Теперь пакет Composer будет думать, что пакет heartcode/CanvasLoader зарегистрирован на сайте packagist.org Но, кроме этого пакет нужно добавить в require: 2. Добавление composer-пакета: "require": { ...тут могут быть прописаны др. пакеты "heartcode/CanvasLoader": "1.*" }, а теперь в консоле выполните команду:
эта команда установит только heartcode/CanvasLoader, а все остальные пакеты обновлены не будут, это очень важно. Удаление пакета Удалите выше добавленные в файл composer.json упоминания о пакете и в консоле выполните команду:
и Composer удалит директорию из папки vendor, удачки. Конфликт Если композер говорит:
например: # composer update monolog/monolog --prefer-source Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for theorchard/monolog-cascade ^0.2.0 -> satisfiable by theorchard/monolog-cascade[0.2.0]. - Conclusion: remove symfony/yaml v2.6.4 - Conclusion: don't install symfony/yaml v2.6.4 - theorchard/monolog-cascade 0.2.0 requires symfony/yaml ~2.7.0 -> satisfiable by symfony/yaml[v2.7.0, v2.7.1, v2.7.2, v2.7.3, v2.7.4]. - Can only install one of: symfony/yaml[v2.7.0, v2.6.4]. - Can only install one of: symfony/yaml[v2.7.1, v2.6.4]. - Can only install one of: symfony/yaml[v2.7.2, v2.6.4]. - Can only install one of: symfony/yaml[v2.7.3, v2.6.4]. - Can only install one of: symfony/yaml[v2.7.4, v2.6.4]. - Installation request for symfony/yaml == 2.6.4.0 -> satisfiable by symfony/yaml[v2.6.4]. т.е. нужно обновить так же symfony/yaml, а значит пишем:
и теперь все пойдет как по маслу (а если нет, до следом указывайте др. необходимые к обновлению компоненты). Конфликт 2: Если Вы добавляете в проект свой пакет, например:
то обратите внимание, возможно Вы в файле composer.json неправильно прописали минимально возможную версию, которую кстати можно узнать на сайте https://packagist.org/packages/yapro/debug (в настоящий момент версия пишется слева, сразу ниже названия пакета и по-умолчанию dev-master. Например у меня было: "require": { "yapro/debug": "*" }, а стало: "require": { "yapro/debug": "dev-master" }, Конфликт 3 Кода у Вас vendor под git-ом, то Ваши вендоры могут не содержать директории .git и composer update скажет Вам:
самый простой способ решить данную проблему - установить зависимость заново:
готово. Оптимизация p.s. не забывайте перед выкладкой на продакшен выполнять команду:
и при сборке билда в докере:
Хитрость Если Вы форкнули проект на гитхабе, создали ветку, сделали коммит в этой ветке и заслали PR, то не ждать же пока PR дойдет до вендора! Поэтому, в файл composer.json добавляем: "repositories":[
...
{
"type":"vcs",
"url":"http://github.com/yapro/some-project"
}
...
],
...
"require": {
...
"some-company/some-project": "my-branch",
...
},
и выполняем команду обновления чужого проекта
благодаря такой хитрости, composer сначала поищет ветку my-branch в репозитории http://github.com/yapro/some-project Хитрость с BitBucket Выглядит так же, как и выше описанный пример, однако, обратите внимание, чтобы composer не задавал нам вопросы авторизации в BitBucket, а использовал ssh-ключ доступа, мы укажим путь к репозиторию в виде git-ссылки: "repositories":[ ... { "type":"vcs", "url":"git@bitbucket.org:lebnik/test-for-composer.git" } ... ], ... "require": { ... "lebnik/test-for-composer": "dev-master", ... }, При этом не забудьте в корень BitBucket-проекта положить файл composer.json с приблизительно таким содержимым: { "name": "lebnik/test-for-composer", "description": "Common classes", "version": "0.0.7", "type": "library", "keywords": ["php", "common", "classes"], "homepage": "https://bitbucket.org/lebnik/test-for-composer", "license": "MIT", "autoload": { "psr-4": { "TestForComposer\\": "src/" } }, "target-dir": "" } Минимальный конфиг: { "name": "mol/queue", "type": "library", "autoload": { "psr-0": { "Queues" : "src" } } } И далее, как и раньше подключаем зависимость: { "type":"vcs", "url":"ssh://git@stash.combany.ru:5555/mol/queue.git" } и внимание: если подключаемая ветка названа feature/SUPPORT-61, то указываем версию зависимости с префиксом dev-: "require": { "mol/queue": "dev-feature/SUPPORT-61", Проблема с форкомЯ форкнул репозиторий, который имеется в packagist.org, и воспользовался инструкцией: { "name": "my.name/test", "repositories": [ { "type": "vcs", "url": "https://github.com/yapro/php-barcode-generator" } ], "require": { "yapro/php-barcode-generator": "v0.2.2" } } Однако, при выполнении команды composer update yapro/php-barcode-generator, я постоянно получал ошибку:
И быть может, я неправильно прописал, но настройки минимально стабильной версии никак не помогли мне: "minimum-stability": "dev", "prefer-stable" : true, "require": { "yapro/php-barcode-generator": "v0.2.2*@dev" } В итоге, пришлось отказаться от инструкции "type": "vcs", и воспользоваться "type":"package". |
|
Похожие статьи: |
в удалении пакетов ошибка... должно быть remove а не update |
« virtualbox ctrl+alt+del | chkconfig добавление в автозагрузку » |
Главная | PHP | MySQL | Unix | JavaScript | Desktop | Дизайн | Продвижение | Другое |
X |
Новые заметки:→ Список вопросов для собеседования разработчика по телефону → Symfony2 авторизация без Doctrine2 для чайника → Жесткий хабр или не хабр, тогда кто? |
Последние комменты:31.03.2018 00:53, 310 комментов
23.03.2018 11:54, 106 комментов
03.03.2018 07:13, 14 комментов
28.02.2018 19:33, 3 коммента
19.02.2018 03:36, 1 коммент
|
Yapro CMS:→ Плагины
|