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

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

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

Сообщение 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 не подтягивается, но и ошибок при этом не каких нет, в чем может быть причина?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark »

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

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

Сообщение unclead »

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

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

Sam Dark писал(а):Composer читает рекурсивно.
К сожалению, нет.
https://getcomposer.org/doc/faqs/why-ca ... rsively.md
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

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

Сообщение shkarbatov »

А на счет вопросов, есть у кого-то идеи?
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

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

Сообщение unclead »

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

я поднимал у себя, конечно прироста в скорости обновления я не заметил, но отпала необходимость прописывать приватные репозитории в composer.json
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

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

Сообщение shkarbatov »

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

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

Сообщение unclead »

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

P.S. хотя я могу и ошибаться и способ все же есть
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

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

Сообщение shkarbatov »

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

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

"repositories": [
    {"type": "vcs", "url": "https://git.test.ua/components/technical_session.git"},
    {"type": "vcs", "url": "https://git.test.ua/components/curl.git"}
], 
Но у меня почему-то так не работает.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark »

Я как раз про satis или https://toranproxy.com/ с полноценными приватными пакетами...
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

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

Сообщение shkarbatov »

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

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

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

Сообщение samdark »

Если прописывать таким образом то да, composer не читает зависимости. Не знаю, специально или нет, но факт.
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

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

Сообщение shkarbatov »

То есть решить данную проблему можно только с помощью satis или toranproxy, и посредством чистого composer - никак?
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

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

Сообщение unclead »

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

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

Сообщение 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"
} 
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

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

Сообщение 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"
} 
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

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

Сообщение shkarbatov »

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

Я именно о рекурсивном говорю.
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

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

Сообщение unclead »

А вообще я сейчас протестировал у себя и у меня зависимости подтянулись рекурсивно.
Возможно у тебя что-то не то с 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 »

У Вас тут либо нет вложенных зависимостей у указанных выше пакетов. Либо они есть, но находятся не в приватных репозиториях. С публичным репозиторием проблем нет =)
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

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

Сообщение 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\\": ""
        }
    }
}
 
Ответить