---
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!