Каковы различия между обновлением композитора и его установкой?

Каковы различия между composer update а также composer install?

3 ответа

Решение

обновление композитора

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 install, он ищет файл блокировки и устанавливает все, что в нем содержится, если он не может его найти, он читает composer.json, устанавливает его зависимости и генерирует файл блокировки.

Когда вы запускаете обновление composer, он просто читает composer.json, устанавливает зависимости и обновляет файл блокировки (или создает новый файл блокировки).

composer install

  1. Если composer.lock существует.
    • Обрабатывает и устанавливает зависимости от composer.lock файл.
  2. Если composer.lock не существует
    • Процесс установки пакетов из composer.json,
    • Создает composer.lock файл на основе установленных пакетов.

Согласно: composer help install:

Команда установки читает composer.lock файл из текущего каталога, обрабатывает его, загружает и устанавливает все библиотеки и зависимости, описанные в этом файле. Если файл не существует, он будет искать composer.json и сделай то же самое.


composer update

  1. Обрабатывает зависимости от composer.json файл (устанавливает, обновляет и удаляет).
  2. Создает или обновляет composer.lock файл в соответствии с изменениями.

Согласно: composer help update:

Команда обновления читает composer.json файл из текущего каталога, обрабатывает его и обновляет, удаляет или устанавливает все зависимости.


Смотрите также: Composer: все дело в файле блокировки

композитор установить

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".
Тогда у него будет несколько случаев

  • Сегодня мы хорошо работаем с текущей версией зависимостей (например, 1.0.0), но несколько месяцев спустя, обновление зависимости (например, 1.0.1) и, возможно, содержит некоторую ошибку
  • Другой член команды может иметь другую версию зависимости, если он запускает composer install в другое время.

Что, если мы всегда будем использовать ТОЧНУЮ версию в composer.json такие как "monolog/monolog": "1.0.1"?
Нам все еще нужноcomposer.lock так как composer.json отслеживать только основную версию вашей зависимости, он не может отслеживать версию зависимостей зависимости.

Что если все зависимости зависимостей также используют ТОЧНУЮ версию?
Представьте, что вы начинаете со ВСЕХ зависимостей, которые используют ТОЧНУЮ версию, тогда вам все равно.composer.lock. Однако несколько месяцев спустя вы добавляете новую зависимость (или обновляете старую зависимость), и зависимости этой зависимости не используют ТОЧНУЮ версию. Тогда лучше позаботитьсяcomposer.lock с начала.

Кроме того, семантическая версия имеет преимущество перед точной версией. Мы можем обновлять зависимость много раз во время разработки, и в библиотеке часто есть небольшие изменения, такие как исправление ошибок. Тогда проще обновить зависимость, использующую семантическую версию.

Лучшая разница между composer update а также composer install

композитор установить

Чтобы добавить зависимости, вам нужно добавить их вручную в файл composer.json.

Если файл composer.lock существует, установите именно то, что указано в этом файле

  • В противном случае прочитайте файл composer.json, чтобы узнать, какие зависимости нужно установить.
  • Напишите composer.lock с информацией о проекте (установленные зависимости)

Не любой компонент будет обновляться с помощью этой команды.

обновление композитора

Чтобы добавить или удалить зависимости, вам нужно добавить их вручную в файл composer.json.

  • Файл composer.lock будет игнорироваться
  • Зависимости файла composer.json будут установлены и обновлены (если зависимость не установлена, она будет загружена)

Если вы не можете (или не знаете, как добавить или удалить библиотеку, что на самом деле просто, просто добавьте имя зависимости и версию в свойстве require файла), измените файл composer.json вручную или вы предпочтительнее использовать командную строку вместо этого, у композитора есть специальные функции для этого:

композитор требует

Например, если мы хотим добавить зависимость с помощью командной строки, мы просто выполним

composer require twig/twig

  • Файл composer.json будет изменен автоматически и будет добавлена ​​новая зависимость
  • зависимость будет загружена в проект

композитор удалить

Если вы хотите удалить неиспользуемую зависимость, мы просто выполним:

composer remove twig/twig --update-with-dependencies

  • Веточка будет удалена со всеми его зависимостями
Другие вопросы по тегам