Может ли composer генерировать `composer.lock` без фактической загрузки пакетов?
Существует команда для генерации composer.lock
из composer.json
?
Нечто подобное рубина bundler
: $ bundle lock
5 ответов
Если у вас нет composer.lock
Ответ "нет", вы должны сгенерировать файл блокировки, используя:
composer install
Установка без composer.lock
Если вы никогда ранее не выполняли команду, а также отсутствует файл composer.lock, Composer просто разрешает все зависимости, перечисленные в вашем файле composer.json, и загружает последнюю версию их файлов в каталог vendor в вашем проекте.
Источник: getcomposer.org
NB Потенциальная проблема: без файла блокировки компоновщик будет использовать последнюю версию зависимостей.
Если у вас уже есть composer.lock
И композитор жалуется, что он не синхронизирован (не может вспомнить точное предупреждение), тогда вы можете обновить файл блокировки, но это действительно только обновляет хэши в файле:
composer update --lock
Из руководства композитора:
--lock Только обновляет хэш файла блокировки, чтобы подавить предупреждение о том, что файл блокировки устарел.
Запись файла блокировки
composer.lock
без пакетов загрузки:
composer update --no-install
Композитор версии 2.2.5
Эта функция включена в выпуск v2.0, см. Здесь:https://github.com/composer/composer/pull/8669
Невозможно создать файл блокировки без установки или обновления, это сделано специально (благодарность Manish Yadav)
Смысл файла блокировки - записать точные версии, которые установлены, чтобы их можно было переустановить. Это означает, что если у вас есть спецификация версии 1.*, и ваш коллега запускает обновление composer, которое устанавливает 1.2.4, а затем фиксирует файл composer.lock, при установке composer вы также получите 1.2.4, даже если 1.3.0 был выпущен. Это гарантирует, что все работающие над проектом имеют одинаковую точную версию.
Источник: Композитор: это все о блокировке файла
composer install --ignore-platform-req=ext-fileinfo
решил мою проблему. Это сработало на 100%.