Вам также необходимо зафиксировать файл composer.lock. Это очень важно - это означает, что, когда кто-то еще проверяет код, он получает одинаковый набор зависимостей (включая их точные версии), установленные в каталоге/vendor.
Вот почему вам не нужен каталог/vendor, который должен быть зафиксирован - файл блокировки заботится о том, чтобы гарантировать, что зависимости исправлены.
Композитор.json определяет множество потенциальных версий ваших зависимостей, которые отвечают вашим требованиям. Запуск composer update
в основном проверяет, доступна ли более новая версия, соответствующая этим требованиям. В этом разница между установкой и обновлением - установка отключается от файла блокировки и точно знает, что искать - обновление отключается от json-файла и может возвращать разные результаты в разные моменты времени.
В вашем composer.json вы можете определить автозагрузчик, указав, где находится ваше пространство имен корней.
"autoload": {
"psr-4": {
"RootNamespace\\": "library/src"
}
},
Когда ваши коллеги запустить composer install
это создаст автозагрузчик для них в последовательном пути.
У вас есть варианты развертывания:
Вы можете загрузить файл composer.lock и запустить композитор установки по производству, или сделать это заранее, и загрузить каталог поставщика, как часть сборки.
Я делаю последнее, как я бы предпочел, если в этот момент возникла проблема, чтобы знать об этом до любые файлы изменены на производственном сервере. Альтернатива может оставить неудачное обновление при производстве с отсутствующими зависимостями. Безопаснее сначала установить эти зависимости и перенести все за один раз.
Как и в стороне, я также хотел бы установить новый выпуск в отдельную папку для производства, названную после коммита git, а затем символизировать ее как часть шага развертывания. Это гарантирует, что у вас нет полуобработанного приложения, пока вы ждете, пока остальная часть файлов будет загружена. Этот подход также устранит проблему, упомянутую выше, что означает, что вы можете выполнить установку композитора с производства.
Просто дополнительная заметка о 'composer.lock'. Это не просто гарантирует, что вы получите одинаковые зависимости, но также и те же версии (просто подумал, что стоит отметить).Кроме того, перед загрузкой файлов на сервер производств запустите: 'comper install --no-dev --optimize-autoloader', чтобы убедиться, что вы получаете только соответствующие пакеты (игнорируя dev-пакеты) и оптимизированный автозагрузчик (он не" t нужно искать IO, пытаясь искать классы). –
Да, это то, что я имел в виду (относительно версий), но я не был достаточно конкретным - спасибо, что указали это. – bcmcfc
Symlinks FTW. Это также упрощает возврат к предыдущей версии, если это необходимо. –