Страница 1 из 2
Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.24, 10:59
shkarbatov
Всем привет.
У меня в проекте есть
composer.json, так как composer не читает репозитории рекурсивно, приходится указать в основном файле все репы
Код: Выделить всё
{
"repositories": [
{"type": "vcs", "url": "https://git.test.ua/components/technical_session.git"},
{"type": "vcs", "url": "https://git.test.ua/components/curl.git"}
],
"require": {
"shkarbatov/technical_session": "dev-master"
},
"minimum-stability": "dev"
}
--------------------------------------------
Есть пакет
technical_session у которого свой
composer.json
Код: Выделить всё
{
"name": "shkarbatov/technical_session",
"repositories": [
{"type": "vcs", "url": "git@git.test.ua:components/curl.git"}
],
"minimum-stability": "dev",
"require-dev": {
"shkarbatov/curl": "dev-master"
},
"autoload": {
"psr-4": {
"shkarbatov\\technical_session\\": ""
}
}
}
--------------------------------------------
У пакета
technical_session в зависимостях есть пакет curl, вот
composer.json этого пакета:
Код: Выделить всё
{
"name": "shkarbatov/curl",
"autoload": {
"psr-4": {
"shkarbatov\\curl\\": ""
}
},
"minimum-stability": "dev"
}
--------------------------------------------
Вопросы:
1) Можно ли как-то указать в файле composer.json, который находится на проекте централизованный репозиторий, а не перечень зависимых пакетов:
Код: Выделить всё
{"type": "vcs", "url": "https://git.test.ua/components/technical_session.git"},
{"type": "vcs", "url": "https://git.test.ua/components/curl.git"}
2) При выполнении composer install у меня загружается только пакет technical_session, а пакет curl не подтягивается, но и ошибок при этом не каких нет, в чем может быть причина?
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.24, 19:55
samdark
Composer читает рекурсивно.
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.24, 20:05
unclead
Код: Выделить всё
"repositories": [
{"type": "vcs", "url": "git@git.test.ua:components/curl.git"}
],
repositories поддерживается только для головного composer.json.
Если он указан в зависимом пакете, то он не учитывается.
Сам с этим сталкивался и про это указано в офф. докуменатции
https://getcomposer.org/doc/faqs/why-ca ... rsively.md
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.24, 21:05
shkarbatov
Sam Dark писал(а):Composer читает рекурсивно.
К сожалению, нет.
https://getcomposer.org/doc/faqs/why-ca ... rsively.md
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.24, 21:06
shkarbatov
А на счет вопросов, есть у кого-то идеи?
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.25, 07:08
unclead
есть способ использовать satis как локальное зеркало репозиториев
http://code.tutsplus.com/tutorials/sett ... -net-36726
я поднимал у себя, конечно прироста в скорости обновления я не заметил, но отпала необходимость прописывать приватные репозитории в composer.json
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.25, 11:51
shkarbatov
Спасибо за ссылку, хорошая статья.
Но, не хотелось бы обвешивать проект лишней логикой, хотелось бы решить все с помощью композера.
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.25, 15:41
unclead
Спасибо за ссылку, хорошая статья.
Но, не хотелось бы обвешивать проект лишней логикой, хотелось бы решить все с помощью композера.
других способов нет, таковы ограничения composer.
Либо прописывать все приватные репозитории в repositories проектного composer.json либо использовать локальный composer/satis
P.S. хотя я могу и ошибаться и способ все же есть
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.25, 16:43
shkarbatov
Так я как раз и прописал оба репозитория.
Код: Выделить всё
"repositories": [
{"type": "vcs", "url": "https://git.test.ua/components/technical_session.git"},
{"type": "vcs", "url": "https://git.test.ua/components/curl.git"}
],
Но у меня почему-то так не работает.
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.25, 17:43
samdark
Я как раз про satis или
https://toranproxy.com/ с полноценными приватными пакетами...
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.25, 20:13
shkarbatov
Спасибо конечно. Но вся суть в том, что я могу прописать пакеты в основном файле проекта, то есть обойтись без satis.
Меня интересует в чем причина того, что у меня не подгрузился зависимый пакет, хотя его репозиторий указан.
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.26, 13:59
samdark
Если прописывать таким образом то да, composer не читает зависимости. Не знаю, специально или нет, но факт.
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.26, 17:04
shkarbatov
То есть решить данную проблему можно только с помощью satis или toranproxy, и посредством чистого composer - никак?
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.27, 07:25
unclead
То есть решить данную проблему можно только с помощью satis или toranproxy, и посредством чистого composer - никак?
ну либо ты можешь прописать все приватные зависимости в блок require/require-dev основного composer.json.
Не лучший вариант, но должен решить твою проблему.
Все таки composer это не серебряная пуля и имеет свои ограничения
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.27, 10:36
shkarbatov
Я в начале привел код с блоком require, там эти блоки прописаны, но оно не работает.
Код: Выделить всё
{
"repositories": [
{"type": "vcs", "url": "https://git.test.ua/components/technical_session.git"},
{"type": "vcs", "url": "https://git.test.ua/components/curl.git"}
],
"require": {
"shkarbatov/technical_session": "dev-master"
},
"minimum-stability": "dev"
}
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.27, 16:52
unclead
я имел в виду
Код: Выделить всё
{
"repositories": [
{"type": "vcs", "url": "https://git.test.ua/components/technical_session.git"},
{"type": "vcs", "url": "https://git.test.ua/components/curl.git"}
],
"require": {
"shkarbatov/technical_session": "dev-master",
"shkarbatov/curl": "dev-master"
},
"minimum-stability": "dev"
}
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.27, 17:07
shkarbatov
Так это же не рекурсивное подключение =)
Я именно о рекурсивном говорю.
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.27, 17:17
unclead
А вообще я сейчас протестировал у себя и у меня зависимости подтянулись рекурсивно.
Возможно у тебя что-то не то с minimum-stability.
Правда я у себя указываю так
Код: Выделить всё
"require": {
"php": ">=5.4.0",
"albatross/yii2-commons": "*",
"ib/ib-address": "*",
"ib/ib-rbac": "*",
"ib/ib-common": "*"
},
т.е. * вместо dev-master
На этом мои познания composer заканчиваются
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.27, 17:30
shkarbatov
У Вас тут либо нет вложенных зависимостей у указанных выше пакетов. Либо они есть, но находятся не в приватных репозиториях. С публичным репозиторием проблем нет =)
Re: Рекурсивное подключение пакетов через composer
Добавлено: 2015.04.27, 17:34
unclead
все есть
composer.json проекта
Код: Выделить всё
"repositories": [
тут прописаны приватные репозитории, например
{
"url": "example.ru/ib/ib-users.git",
"type": "git"
},
],
"minimum-stability": "dev",
"require": {
"php": ">=5.4.0",
"yiisoft/yii2": "2.0.3",
"yiisoft/yii2-bootstrap": "2.0.3",
"yiisoft/yii2-jui": "2.0.3",
"yiisoft/yii2-redis": "2.0.3",
"yiisoft/yii2-swiftmailer": "2.0.3",
"ib/ib-users": "*",
...
},
а вот
composer.json пакета ib-users
Код: Выделить всё
{
"name": "ib/ib-users",
...
"require": {
"php": ">=5.4.0",
"albatross/yii2-commons": "*",
"ib/ib-address": "*",
"ib/ib-rbac": "*",
"ib/ib-common": "*"
},
"autoload": {
"psr-4": {
"ib\\users\\": ""
}
}
}