# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://overfinch.gitbook.io/cheatsheet/composer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
