
В проекте API у нас composer.json установлен следующим образом:
{
"require-dev": {
"phpunit/phpunit": "4.7.*"
},
"require": {
"monolog/monolog": "1.5.*"
}
}
И, на первый взгляд, composer install
все было нормально. Phpunit работал при вызове с помощью vendor/bin/phpunit
. Моя рабочая машина — ОС Windows 7, однако мы используем git с этим проектом, и когда я работаю над этим с другой машины (Kubuntu 14.04), после выполнения git pull
, я больше не могу запускать модульные тесты с помощью vendor/bin/phpunit
— он вылетает с ошибкой, что не может найти vendor/bin/phpunit.
На машине Linux я удалил неработающий исполняемый файл vendor/bin/phpunit, удалил папку vendor/phpunit и заставил composer заменить ее через composer update
. В этот момент я снова могу запускать модульные тесты, как и раньше. Однако на Windows 7 это работает не так гладко. Это сложнее.
Мой вопрос: я делаю что-то неправильно, отслеживая файлы через github, а затем работая на разных операционных системах? Избежал бы я этой ошибки, если бы отслеживал composer.json
и оставлял содержимое vendor/phpunit/phpunit
каталога неотслеживаемым (и позволял файлам оставаться с их конкретной ОС)? Спасибо, Адам.
решение1
Цель Composer заключается в том, что вам просто нужно иметь пустой(!) vendor
каталог в вашем репозитории, но отслеживать composer.json
(требования) и composer.lock
(последние протестированные конкретные версии) и запускать composer install
после проверки на новой машине для разработки.
(Примечание. composer install
Будут установлены конкретные версии в соответствии с composer.lock
файлом. composer update
Будут установлены любые последние версии, соответствующие требованиям, указанным в composer.json
.)
Затем Composer должен загрузить соответствующий двоичный файл для вашей системы и поместить его в vendor/bin/
каталог.