Каковы различия между composer update
и composer install
?
Каковы различия между composer update
и composer install
?
Ответы:
обновление композитора
composer update
обновит ваши зависимости, как они указаны в composer.json
Например, если вам требуется этот пакет в качестве зависимости:
"mockery/mockery": "0.9.*",
и вы фактически установили 0.9.1
версию пакета, запуск composer update
приведет к обновлению этого пакета (например 0.9.2
, если он уже выпущен)
подробно composer update
расскажу:
composer.json
composer.json
composer.lock
для хранения версии установленных пакетовкомпозитор установить
composer install
не будет ничего обновлять; он просто установит все зависимости, указанные в composer.lock
файле
В деталях:
composer.lock
существует ли файл (если нет, запустите composer-update
и создайте его)composer.lock
файлcomposer.lock
файлеКогда устанавливать и когда обновлять
composer update
в основном используется в «фазе разработки», чтобы обновить наши пакеты проекта в соответствии с тем, что мы указали в composer.json
файле,
composer install
в основном используется на этапе развертывания для установки нашего приложения на производственном сервере или в среде тестирования, используя те же зависимости, которые хранятся в файле composer.lock, созданном обновлением composer.
composer global update
обновляет зависимости в вашем глобальном репозитории в локальной системе ( COMPOSER_HOME
переменная env)
composer update
свою локальную систему и протестировать свое приложение, затем загрузить composer.lock на свой composer install
При запуске composer install
он ищет файл блокировки и устанавливает все, что в нем содержится, если он не может его найти, он читает composer.json
, устанавливает свои зависимости и генерирует файл блокировки.
При запуске composer update
он просто читает composer.json
, устанавливает зависимости и обновляет файл блокировки (или создает новый файл блокировки).
composer install
composer.lock
существует.
composer.lock
файла.composer.lock
же не существует.
composer.json
.composer.lock
файл на основе установленных пакетов.Согласно composer help install
:
Команда install читает
composer.lock
файл из текущего каталога, обрабатывает его, загружает и устанавливает все библиотеки и зависимости, описанные в этом файле. Если файл не существует, он будет искатьcomposer.json
и делать то же самое.
composer update
composer.json
файла (устанавливает, обновляет и удаляет).composer.lock
файл в соответствии с изменениями.Согласно composer help update
:
Команда update считывает
composer.json
файл из текущего каталога, обрабатывает его и обновляет, удаляет или устанавливает все зависимости.
Смотрите также: Composer: все дело в файле блокировки
Лучшая разница между composer update
иcomposer install
композитор установить
Чтобы добавить зависимости, вам нужно добавить их вручную в файл composer.json.
Если файл composer.lock существует, установите именно то, что указано в этом файле
Не любой компонент будет обновляться с помощью этой команды.
обновление композитора
Чтобы добавить или удалить зависимости, вам нужно добавить их вручную в файл composer.json.
Если вы не можете (или не знаете, как добавить или удалить библиотеку, что на самом деле просто, просто добавьте имя зависимости и версию в свойстве require файла), измените файл composer.json вручную или вы предпочтительнее использовать командную строку вместо этого, у композитора есть специальные функции для этого:
композитор требует
Например, если мы хотим добавить зависимость с помощью командной строки, мы просто выполним
composer require twig/twig
композитор удалить
Если вы хотите удалить неиспользуемую зависимость, мы просто выполним:
composer remove twig/twig --update-with-dependencies
if(composer.lock existed){
installs dependency with EXACT version in composer.lock file
} else {
installs dependency with LATEST version in composer.json
generate the composer.lock file
}
composer update = remove composer.lock -> composer install
Почему нам нужны 2 команды. Я думаю, что это может объяснить composer.lock.
Представьте себе, мы НЕ имеем composer.lock
и composer.json
есть зависимость "monolog/monolog": "1.0.*"
или "monolog/monolog": "^1.0"
.
Тогда будет несколько случаев
composer install
в другое время.Что если мы всегда будем использовать EXACT-версию, composer.json
например "monolog/monolog": "1.0.1"
?
Нам все еще нужно, composer.lock
потому что composer.json
только отслеживать основную версию вашей зависимости, он не может отслеживать версию зависимости зависимости.
Что если все зависимости также используют версию EXACT?
Представьте, что вы начинаете со ВСЕХ зависимостей, которые используют версию EXACT, тогда вам все равно composer.lock
. Однако несколько месяцев спустя вы добавляете новую зависимость (или обновляете старую зависимость), и зависимости этой зависимости не используют версию EXACT. Тогда лучше позаботиться composer.lock
в начале.
Кроме того, семантическая версия имеет преимущество перед точной версией. Мы можем обновлять зависимость много раз во время разработки, и библиотека часто имеет небольшие изменения, такие как исправление ошибки. Тогда проще обновить зависимость, которая использует семантическую версию.