If you were an early Drupal 8 adopter you’ve might have downloaded and installed your Drupal 8 sites by downloading a tarball or using Drush. We did as well, but the benefits of using Composer are so great that it’s time to convert those in to being Composer-managed.
Luckily, grasmash has built a great Composer plugin called Composerize Drupal which does all the heavy-lifting for us.
Here’s how we did it:
Before you even begin, make sure you branch out $ git checkout -b chore/composerize-drupal
And then we installed the Composer plugin globally:
composer global require grasmash/composerize-drupal
Consider the plugin options available:
- Use the
--exact-versions
option if the site is big and complex. Especially if you don’t have any good test coverage to ensure your site doesn’t break. The option sets the constraints of your composer.json to the exact versions of your currently downloaded modules.
Now we run the command:
composer composerize-drupal --composer-root=. --drupal-root=. --exact-versions
Next:
- Update your
.gitignore
and ignore thevendor/
,core/
andmodules/contrib
folders. If the files were already commited you also need to remove them: Ignore files that have already been committed to a Git repository - Re-apply your patches! Since all the core code and contrib. modules are managed by Composer you’ll need to add those patches to your
composer.json
:
Something like this:
"extra": {
"enable-patching": true,
"patches": {
"drupal/core": {
"2492171 - Adds transliteration to uploaded file and images": "_kodamera/patches/use_new_transliteration-2492171-72.patch"
}
}
...
When you run composer install
they are automatically applied for you. No more manually work here. Yay!
Do some regression testing and if everything looks fine, you’re done! Commit and deploy 🙂