Які відмінності між 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.jsoncomposer.jsoncomposer.lockдля зберігання версії встановлених пакетівкомпозитор встановити
composer installнічого не оновить; він просто встановить усі залежності, як зазначено у composer.lockфайлі
Детально:
composer.lockіснує файл (якщо ні, запустіть composer-updateі створіть його)composer.lockфайлcomposer.lockфайліКоли встановити та коли оновити
composer updateв основному використовується на «фазі розробки» для оновлення наших пакетів проектів відповідно до того, що ми вказали у composer.jsonфайлі,
composer install в основному використовується у фазі розгортання для встановлення нашого додатку на виробничому сервері або на тестовому середовищі, використовуючи ті самі залежності, що зберігаються у файлі composer.lock, створеному оновленням композитора.
composer global updateоновлює залежності у вашому глобальному сховищі від локальної системи ( COMPOSER_HOMEenv змінна)
composer updateу локальній системі та протестувати свою програму, а потім завантажити composer.lock на свій виробничий сервер і запуститиcomposer install
Під час запуску composer installвін шукатиме файл блокування та встановлює все, що міститься в ньому, якщо він не може знайти його, він прочитає composer.json, встановить його залежності та сформує файл блокування.
Під час запуску composer updateвін просто зчитує composer.json, встановлює залежності та оновлює файл блокування (або створює новий файл блокування).
composer installcomposer.lockвона існує.
composer.lockфайлу.composer.lockж НЕ існує.
composer.json.composer.lockфайл на основі встановлених пакетів.Відповідно до composer help install:
Команда install читає
composer.lockфайл з поточного каталогу, обробляє його та завантажує та встановлює всі бібліотеки та залежності, зазначені у цьому файлі. Якщо файл не існує, він буде шукатиcomposer.jsonі робити те саме.
composer updatecomposer.jsonфайлу (встановлює, оновлює та видаляє).composer.lockфайл відповідно до змін.Відповідно до composer help update:
Команда оновлення читає
composer.jsonфайл з поточного каталогу, обробляє його та оновлює, видаляє або встановлює всі залежності.
Дивіться також: Композитор: Все про файл блокування
Найкраща різниця між composer updateіcomposer install
композитор встановити
Щоб додати залежності, потрібно додати її вручну до файлу composer.json.
Якщо файл composer.lock існує, встановіть саме те, що визначено для цього файлу
За допомогою цієї команди жоден компонент не буде оновлений.
оновлення композитора
Щоб додати або видалити залежності, потрібно додати його вручну до файлу composer.json
Якщо ви не можете (або не знаєте, як додати або видалити бібліотеку, що насправді просто, просто додайте ім’я залежності та версії в властивості вимагати файл), змінити файл 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в інший час.Що робити, якщо ми завжди використовуємо точну версію в composer.jsonтакій як "monolog/monolog": "1.0.1"?
Нам все ще потрібно, composer.lockтому що composer.jsonлише відстежувати основну версію вашої залежності, вона не може відслідковувати версію залежностей.
Що робити, якщо всі залежності залежно також використовують версію EXACT?
Уявіть, що ви починаєте з ВСІХ залежностей, які використовують ТОЧУЮ версію, тоді вас не хвилює composer.lock. Однак через кілька місяців ви додаєте нову залежність (або оновлюєте стару залежність), і залежності цієї залежності не використовують версію EXACT. Тоді краще доглядати composer.lockна початку.
Крім того, є перевага семантичної версії перед точною версією. Ми можемо багато разів оновлювати залежність під час розробки, і в бібліотеці часто виникають невеликі зміни, такі як виправлення помилок. Тоді простіше оновити залежність, яка використовує семантичну версію.