oliverdavies.uk/source/_daily_emails/2023-10-10.md
2024-02-18 01:35:59 +00:00

57 lines
2 KiB
Markdown

---
title: >
Why use Composer to manage Drupal dependencies?
pubDate: 2023-10-10
permalink: >-
archive/2023/10/10/why-use-composer-to-manage-drupal-dependencies
tags:
- software-development
- drupal
- php
- phpc
- composer
---
One of the initial negatives when Drupal 8 launched was introducing Composer, PHP's dependency manager, and how it could affect non-technical users.
When I started doing Drupal, I downloaded the .tar.gz or .zip file of Drupal, extracted it, and placed it within my project.
I did the same for any additional modules I needed.
To update them, I needed to delete my files and repeat the process of downloading and replacing them.
## Drush
Then, instead of doing it manually, I used Drush, the "Drupal shell", to download the files. This saved some time, but it still has down-sides.
What if you needed to install a module like Pathauto, which has dependencies you also need to download and install?
With Drush or downloading the files manually, you'd need to download the dependencies separately.
## Composer
Composer is a dependency manager, which means it can handle these dependencies for us.
It looks at each project's `composer.json` file to find its dependencies and downloads them.
For example, to install Pathauto, you run `composer require drupal/pathauto`.
Within its output, you'll see this:
```language-plain
Package operations: 3 installs, 0 updates, 0 removals
- Downloading drupal/token (1.12.0)
- Downloading drupal/ctools (4.0.4)
- Downloading drupal/pathauto (1.12.0)
```
As well as Pathauto, it's downloading its dependencies - ctools and pathauto.
Instead of downloading three modules, we can do it with one command.
In fact, we don't need to know what its dependencies are - Composer will do that.
Also, updating the modules is just another simple command - `composer update`.
While it may be intimidating to non-technical users, learning a few simple commands makes installing and updating modules much easier!