Які відмінності між 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 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
:
Команда оновлення читає
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
на початку.
Крім того, є перевага семантичної версії перед точною версією. Ми можемо багато разів оновлювати залежність під час розробки, і в бібліотеці часто виникають невеликі зміни, такі як виправлення помилок. Тоді простіше оновити залежність, яка використовує семантичну версію.