> For the complete documentation index, see [llms.txt](https://overfinch.gitbook.io/cheatsheet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overfinch.gitbook.io/cheatsheet/composer.md).

# Composer

Устанавливает пакеты которые указаны в зависимостях в composer.json в папку vendor, у этих  пакетов тоже есть свой composer.json и свои зависимости, их композер тоже "разрешает" и устанавливает. И делает автозагрузку классов соответственно в свойстве "autoload" в composer.json, как в основном, так и в каждом пакете (подробнее [тут](/cheatsheet/composer-psr-4.md)).

<table data-header-hidden><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><code>composer require vendor/package</code></td><td>Добавляет требуемый пакет в файл <code>composer.json</code> и устанавливает его в ваш проект.<br><br>Команда <code>require</code> изменяет <code>composer.json</code>, находящийся в текущей папке. Если пакету требуются зависимости, то они будут установлены или обновлены. А также будет обновлён <code>composer.lock</code>.</td></tr><tr><td><code>composer install</code></td><td>Если файла <code>composer.lock</code> нет, резолвит зависимости исходя из <code>composer.json</code> и создаёт его. Далее, анализирует файл <code>composer.lock</code>, скачивает и устанавливает указанные в нём версии пакетов.<br>Опция <code>--no-scripts</code> полезна для обхода запуска скриптов, указанных в pre- и post- настройках.</td></tr><tr><td><code>composer update</code></td><td>Обновляет ваши зависимости до последних версий и обновляет <code>composer.lock</code>.<br><br>Команда <code>update</code> резолвит зависимости чтобы получить самые последние версии зависящих друг от друга пакетов.</td></tr><tr><td><code>composer update --lock</code></td><td><p>Иногда, вы можете получить такое предупреждение:</p><pre><code>Warning: The lock file is not up to date with the latest changes in composer.json, you may be getting outdated dependencies, run update to update them.
</code></pre><p>Это может произойти после того, как вы вручную редактировали <code>composer.json</code> (добавляли или изменяли <code>description</code>, <code>authors</code>, <code>extra</code> и т. д.). Даже если ваши изменения незначимы для Composer, он обнаруживает, что <strong>md5sum</strong> файла изменена, и предупреждает, что эти изменения не учтены в файле <code>composer.lock</code>.<br><br>Поэтому, чтобы подавить это предупреждение, вы можете просто запустить команду <code>update --lock</code> для обновления lock-файла <strong>без обновления</strong> самих пакетов.</p></td></tr><tr><td><code>composer dump-autoload --optimize</code></td><td>Если вам нужно обновить загрузчик, т. к. появились новые классы, вы можете выполнить команду <code>dump-autoload</code> чтобы избежать установки или обновления пакетов.<br><br>Используйте ключ --optimize для преобразования PSR-0 в автозагрузку как для classmap, чтобы автозагрузчик был наиболее быстрым. <strong>Это настоятельно рекомендуется дляproduction (вы можете получить 20% прирост)</strong>, но может занять немного времени для запуска, так что это на данный момент не сделано по умолчанию.<br><br>Также вы можете использовать <code>dumpautoload</code> псевдоним.</td></tr><tr><td><code>composer create-project vendor/package dir/</code></td><td>Создать новый проект из указанного пакета в указанном каталоге.</td></tr><tr><td><code>composer init</code></td><td>Создает базовый вариант файла <code>composer.json</code> в текущем каталоге.<br><br>При запуске команды, Composer будет интерактивно запрашивать значения полей для заполнения, используя при этом для некоторых полей умные значения по умолчанию.</td></tr><tr><td><code>composer remove</code></td><td>Удаляет пакет из секций require или require-dev: <code>remove vendor/package vendor/package2</code>.</td></tr></tbody></table>
