Рекурсивное подключение пакетов через composer

Выкладываем свои наработки
Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.24, 10:59

Всем привет.

У меня в проекте есть 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 не подтягивается, но и ошибок при этом не каких нет, в чем может быть причина?
Stay hungry, stay foolish.

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Рекурсивное подключение пакетов через composer

Сообщение samdark » 2015.04.24, 19:55

Composer читает рекурсивно.

unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: Рекурсивное подключение пакетов через composer

Сообщение unclead » 2015.04.24, 20:05

Код: Выделить всё

 "repositories": [
        {"type": "vcs", "url": "git@git.test.ua:components/curl.git"}
    ],
 
repositories поддерживается только для головного composer.json.
Если он указан в зависимом пакете, то он не учитывается.
Сам с этим сталкивался и про это указано в офф. докуменатции

https://getcomposer.org/doc/faqs/why-ca ... rsively.md

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.24, 21:05

Sam Dark писал(а):Composer читает рекурсивно.
К сожалению, нет.
https://getcomposer.org/doc/faqs/why-ca ... rsively.md
Stay hungry, stay foolish.

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.24, 21:06

А на счет вопросов, есть у кого-то идеи?
Stay hungry, stay foolish.

unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: Рекурсивное подключение пакетов через composer

Сообщение unclead » 2015.04.25, 07:08

есть способ использовать satis как локальное зеркало репозиториев
http://code.tutsplus.com/tutorials/sett ... -net-36726

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

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.25, 11:51

unclead писал(а):есть способ использовать satis как локальное зеркало репозиториев
http://code.tutsplus.com/tutorials/sett ... -net-36726
Спасибо за ссылку, хорошая статья.
Но, не хотелось бы обвешивать проект лишней логикой, хотелось бы решить все с помощью композера.
Stay hungry, stay foolish.

unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: Рекурсивное подключение пакетов через composer

Сообщение unclead » 2015.04.25, 15:41

Спасибо за ссылку, хорошая статья.
Но, не хотелось бы обвешивать проект лишней логикой, хотелось бы решить все с помощью композера.
других способов нет, таковы ограничения composer.
Либо прописывать все приватные репозитории в repositories проектного composer.json либо использовать локальный composer/satis

P.S. хотя я могу и ошибаться и способ все же есть

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.25, 16:43

Так я как раз и прописал оба репозитория.

Код: Выделить всё

"repositories": [
    {"type": "vcs", "url": "https://git.test.ua/components/technical_session.git"},
    {"type": "vcs", "url": "https://git.test.ua/components/curl.git"}
], 
Но у меня почему-то так не работает.
Stay hungry, stay foolish.

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Рекурсивное подключение пакетов через composer

Сообщение samdark » 2015.04.25, 17:43

Я как раз про satis или https://toranproxy.com/ с полноценными приватными пакетами...

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.25, 20:13

Спасибо конечно. Но вся суть в том, что я могу прописать пакеты в основном файле проекта, то есть обойтись без satis.

Меня интересует в чем причина того, что у меня не подгрузился зависимый пакет, хотя его репозиторий указан.
Stay hungry, stay foolish.

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Рекурсивное подключение пакетов через composer

Сообщение samdark » 2015.04.26, 13:59

Если прописывать таким образом то да, composer не читает зависимости. Не знаю, специально или нет, но факт.

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.26, 17:04

То есть решить данную проблему можно только с помощью satis или toranproxy, и посредством чистого composer - никак?
Stay hungry, stay foolish.

unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: Рекурсивное подключение пакетов через composer

Сообщение unclead » 2015.04.27, 07:25

То есть решить данную проблему можно только с помощью satis или toranproxy, и посредством чистого composer - никак?
ну либо ты можешь прописать все приватные зависимости в блок require/require-dev основного composer.json.
Не лучший вариант, но должен решить твою проблему.
Все таки composer это не серебряная пуля и имеет свои ограничения

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.27, 10:36

Я в начале привел код с блоком 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"
} 
Stay hungry, stay foolish.

unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: Рекурсивное подключение пакетов через composer

Сообщение unclead » 2015.04.27, 16:52

я имел в виду

Код: Выделить всё

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

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.27, 17:07

Так это же не рекурсивное подключение =)

Я именно о рекурсивном говорю.
Stay hungry, stay foolish.

unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: Рекурсивное подключение пакетов через composer

Сообщение unclead » 2015.04.27, 17:17

А вообще я сейчас протестировал у себя и у меня зависимости подтянулись рекурсивно.
Возможно у тебя что-то не то с minimum-stability.
Правда я у себя указываю так

Код: Выделить всё

    "require": {
        "php": ">=5.4.0",
        "albatross/yii2-commons": "*",
        "ib/ib-address": "*",
        "ib/ib-rbac": "*",
        "ib/ib-common": "*"
    }, 
т.е. * вместо dev-master

На этом мои познания composer заканчиваются :)

Аватара пользователя
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Украина Днепропетровск

Re: Рекурсивное подключение пакетов через composer

Сообщение shkarbatov » 2015.04.27, 17:30

У Вас тут либо нет вложенных зависимостей у указанных выше пакетов. Либо они есть, но находятся не в приватных репозиториях. С публичным репозиторием проблем нет =)
Stay hungry, stay foolish.

unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: Рекурсивное подключение пакетов через composer

Сообщение unclead » 2015.04.27, 17:34

все есть :)

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\\": ""
        }
    }
}
 

Ответить