2016-11-16 5 views
2

Прошу прощения, если это было задано раньше, но после поиска какое-то время я не мог найти ответы на свою дилемму.Автозагрузчик композиторов, github и развертывание

Я часть команды, которая работает над проектом PHP, и мы используем github для нашего контроля версий. Мы хотели бы реализовать автозагрузчик PSR-4, и каждый гид использует Composer, чтобы мы тоже. Теперь, во время поиска, я узнал, что папка поставщика не должна включаться в github, а только в composer.json и каждый разработчик должен установить композитор на свой компьютер.

Для этого требуется, чтобы автозагрузчик был создан снова на каждом компьютере разработчиков.

И, наконец, когда проект будет выполнен, мы хотели бы загрузить его на наш веб-сайт, но единственный способ сделать это через FTP.

Какие файлы должны быть загружены на веб-сайт в реальном времени и что произойдет с автозагрузчиком?

ответ

1

Вам также необходимо зафиксировать файл composer.lock. Это очень важно - это означает, что, когда кто-то еще проверяет код, он получает одинаковый набор зависимостей (включая их точные версии), установленные в каталоге/vendor.

Вот почему вам не нужен каталог/vendor, который должен быть зафиксирован - файл блокировки заботится о том, чтобы гарантировать, что зависимости исправлены.

Композитор.json определяет множество потенциальных версий ваших зависимостей, которые отвечают вашим требованиям. Запуск composer update в основном проверяет, доступна ли более новая версия, соответствующая этим требованиям. В этом разница между установкой и обновлением - установка отключается от файла блокировки и точно знает, что искать - обновление отключается от json-файла и может возвращать разные результаты в разные моменты времени.

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

"autoload": { 
    "psr-4": { 
     "RootNamespace\\": "library/src" 
    } 
}, 

Когда ваши коллеги запустить composer install это создаст автозагрузчик для них в последовательном пути.

У вас есть варианты развертывания:

Вы можете загрузить файл composer.lock и запустить композитор установки по производству, или сделать это заранее, и загрузить каталог поставщика, как часть сборки.

Я делаю последнее, как я бы предпочел, если в этот момент возникла проблема, чтобы знать об этом до любые файлы изменены на производственном сервере. Альтернатива может оставить неудачное обновление при производстве с отсутствующими зависимостями. Безопаснее сначала установить эти зависимости и перенести все за один раз.

Как и в стороне, я также хотел бы установить новый выпуск в отдельную папку для производства, названную после коммита git, а затем символизировать ее как часть шага развертывания. Это гарантирует, что у вас нет полуобработанного приложения, пока вы ждете, пока остальная часть файлов будет загружена. Этот подход также устранит проблему, упомянутую выше, что означает, что вы можете выполнить установку композитора с производства.

+1

Просто дополнительная заметка о 'composer.lock'. Это не просто гарантирует, что вы получите одинаковые зависимости, но также и те же версии (просто подумал, что стоит отметить).Кроме того, перед загрузкой файлов на сервер производств запустите: 'comper install --no-dev --optimize-autoloader', чтобы убедиться, что вы получаете только соответствующие пакеты (игнорируя dev-пакеты) и оптимизированный автозагрузчик (он не" t нужно искать IO, пытаясь искать классы). –

+0

Да, это то, что я имел в виду (относительно версий), но я не был достаточно конкретным - спасибо, что указали это. – bcmcfc

+1

Symlinks FTW. Это также упрощает возврат к предыдущей версии, если это необходимо. –