Я обычно использую Java для создания ИТ-проектов с Maven в качестве Dependency Management (DM). По требованиям я должен внедрить DM в компании, в которой я работаю в некоторых проектах, выполненных на PHP. Одним из требований является то, что они не хотят использовать какие-либо фреймворки, такие как Symfony, Laravel, Zend и т. Д.
Я исследовал некоторые DM для PHP и обнаружил, что лучшим вариантом является Composer. Я работаю над многослойными проектами, что-то вроде этого:
Когда я начал создавать эту структуру, первой проблемой, с которой я столкнулся, было то, что Composer не получает рекурсивные зависимости, по этой причине я реализовал Satis как репозиторий пакетов. Я использовал Satis, а не Packagist, потому что проекты являются частными проектами, в которых SVN используется как система контроля версий, а Packagist использовал GitHub для получения исходного кода проектов.
После объяснения всей реализации того, что я сделал, я обнаружил некоторые препятствия для развития моей многослойной структуры.
Мой сыт.json выглядит так
{
"name": "My Repository",
"homepage": "https://www.myrepository.com/",
"repositories": [
{ "type": "vcs", "url": "file:///C:/core/branches/core/" },
{ "type": "vcs", "url": "file:///C:/services/branches/services/" }
],
"require-all": true
}
Спасибо за вашу помощь.
Поддерживаются локальные ссылки, просто указав путь к файлу.
Я не знаю, как это работает в Windows, но в системах на основе Unix / Linux работает следующее:
{
"repositories": [
{ "type": "vcs", "url": "/path/to/git/repo" }
]
}
Рекомендации:
Satis не принимает файловые URL для захвата, но вы можете указать на SVN-репозиторий прямо в корневом проекте. composer.json
(потому что, как вы уже узнали, Composer не разрешает эти хранилища рекурсивно).
Вам не нужно напрямую зависеть от пакета, который предоставляется в этом хранилище, вам нужно только упомянуть его, чтобы сделать его доступным для обновления.