Управление зависимостями - composer

Ярослав

Новичок
Приветствую!

Вот и настал тот момент когда наступил ад из зависимостями в проекте и было решено перевести все это дело на composer.
Проектов довольно много и зависимости на дев машине рулятся симлинками, т.е. есть каталог www/ и в нем уже куча разных сорцов их разных мест: git, svn и т.д. но по принципу company/project/
Далее идет линковка
К примеру:
Код:
company1/
  project1/
     library/
          Zend -> Zend/zendframework/library/Zend
          Doctrine -> Doctrine/Dbal/lib/
т.е. в проект идут только нужные сорцы и всякие там docs, tests не видимы в главном проекте, а существуют только в вендорах.
Далее при деплойменте на bash скрипте все эти сорцы собираются и rsync копирует их на продакшен, все это дело в ручном режиме, т.е. сначала --dry-run смотрятся какие файлы изменились, если нужно то смотрим diff и уже окончательная синхронизация.
Вообщем все стало очень сложно и запутано, как к такому пришли и почему не начали правильно рулить зависимостями ранее - ХЗ
Но настал новый день и было решено исправить ситуацию
Установил composer и начал создавать первый пакет.
Все замечательно работает, зависимости складываются в каталог vendor/ и кажется все отлично если бы не несколько моментов, которые конфликтуют с текущей структурой:
1. Все залетело в vendor, но это получилось исправить
2. Вместе с пакетом прилетели лишние файлы: docs, tests которые мне ненужны и сейчас у меня вид:
Код:
company1/
  project1/
     library/
        Zend/ 
            docs/
            library/
                Zend/
            tests/
            ...
Как указать ему чтобы брал только исходники из определенного каталога непонятно. Создавал собственный пакет и указывал путь к git, но нельзя указать конкретный каталог.
Гугл подсказывает что это нереально добиться, т.к. эти фичи не заложены в сам composer https://github.com/composer/composer/issues/2818 и нужно делать другими путями.
Но мне не нравится что у меня в проекте будут левые каталоги, которые мне не нужны ну и на продакшене они не нужны тем более.
Вариант обхода нашел в виде Satis где можно создавать отдельные пакеты из нужными исходниками.
Также возможет вариант билда проекта тем же bash или phing

Собственно как понянуть в зависимостях только нужные исходники или самый простой способ решить этот вопрос?
 

Ярослав

Новичок
потрать пару недель и сэкономь 20 метров
На данный момент дело даже не во времени, а хочу понять как делать правильно на будущее для уже новых проектов
т.е. для разработки иметь полностью склонирован package в vendors действительно бывает полезно, но вот на сервере - это не нужно
Код:
"source": {
    "type": "vcs",
    "url": "[email protected]:vendor/my-private-repo.git"
},
"dist": {
    // здесь хотелось бы указать тоже самое что и в source + путь где лежат только исходники, без тестов и доков
    "type": "vcs",
    "url": "[email protected]:vendor/my-private-repo.git",
    "path": "src/"  ?
},
Неужели нужно делать архивы для dist и использовать Satis?
Должно же быть как-то проще....
 

Redjik

Джедай-мастер
чем тебе мешают тесты и доки, работать неохота, поэтому решаешь высосанную из пальца проблему, как бы на продакшене вырезать пару папок?
 

Ярослав

Новичок
чем тебе мешают тесты и доки
Они там нафиг не нужны

работать неохота, поэтому решаешь высосанную из пальца проблему, как бы на продакшене вырезать пару папок?
Ага, в воскресенье

На самом деле на продакшене хочу чтобы был только нужный код
Иногда приходится даже через lftp синхронизировать до 100М кода, а это без доков и ресурсов, поэтому хочу все таки уменьшить dev версию
 

Redjik

Джедай-мастер
1) rsync
2) зачем синхронизировать код, когда есть git, composer и лок файлы?
 

WMix

герр M:)ller
Партнер клуба
Тут важно внимательней подойти, в зенде куча разных классов которые в продакшине не используются. (Исбн-валидаторы, и другая хрень) Перед деплоем хорошоб х-дебагом пройтись и вычистить до блеска.
 
Сверху