⏳ 2 min read.
Update apnea: the temporary cessation of breath when updating Craft and Craft plugins.
This article describes the steps I follow to update Craft 3.5.x and plugins in a stress-free and reliable manner. 🧘
Photo by Harli Marten on Unsplash
- Craft 3.5.x is installed in local development and production environments.
- Composer 1.3.0 or later is installed in local development and production environments.
- Access to a command line interface (CLI) in local development and production environments.
- The exact versions of Craft and all plugin packages are specified in
composer.json. This prevents unintended updates when runningcomposer updatein your local development environment. However, I make an exception for thevlucas/phpdotenvpackage.
- Confirm the latest version of Craft by visiting the Update utility in the Craft control panel at http://example.test/admin/utilities/updates.
- Edit the
craftcms/cmsline in thecomposer.jsonfile to change the Craft Composer package to the latest version. - From the command line in the Craft project root, run:
./craft backupto backup the Craft database.composer updateto update the Craft Composer package to the version specified incomposer.json. See step 2../craft migrate/allto run Craft database migrations../craft project-config/applyto apply Craft project config file changes../craft clear-caches/allto clear all the caches.
- Verify that Craft has been updated to the specified version and is still working as expected.
- Confirm the latest version of the plugin by visiting the Update utility in the Craft control panel at http://example.test/admin/utilities/updates.
- Edit the
vendor/package-nameline in thecomposer.jsonfile to change the plugin Composer package to the latest version. - From the command line in the Craft project root, run:
./craft backupto backup the Craft database.composer updateto update the plugin Composer package to the version specified incomposer.json. See step 2../craft migrate/allto run plugin database migrations../craft project-config/applyto apply project config file changes../craft clear-caches/allto clear all the caches.
- Verify that the plugin has been updated to the specified version and is still working as expected.
- Repeat steps 1-4 for all other plugins that I want to update.
- From the command line in the Craft project root, run:
./craft backupto backup the Craft database.composer installto install the Craft and/or plugin Composer packages that I previously updated in my local development environment../craft migrate/allto run all database migrations../craft project-config/applyto apply project config file changes../craft clear-caches/allto clear all the caches.
- Verify that Craft and/or plugins have been updated to the specified versions and are still working as expected.
To avoid running the above Craft CLI commands manually, I've added the following Composer command events with the relevant Craft CLI commands to the scripts section of my Craft project's composer.json file.
"pre-update-cmd": [
"@php craft backup/db"
],
"post-update-cmd": [
"@php craft migrate/all",
"@php craft project-config/apply",
"@php craft clear-caches/all"
],
"pre-install-cmd": [
"@php craft backup/db"
],
"post-install-cmd": [
"@php craft migrate/all",
"@php craft project-config/apply",
"@php craft clear-caches/all"
]By following the steps described above, I can calmly and confidently update Craft and plugins in my local development and production environments.
⊹╰(⌣ʟ⌣)╯⊹
Hi Andrea.
Can you explain how you execute the commands at the end? Is it
composer pre-update-cmd?