Modern Drupal Development with Composer
PHPSW Lightning Talks - November 2016
Oliver Davies
- Senior Drupal/PHP Developer
- Appnovation Technologies
- @opdavies
The Old Ways
- Download an archive from Drupal.org
- Use Drush commands (
drush dl
)
- Use Drush Make
Composer
- Drupal Packagist (deprecated)
- Composer endpoints on Drupal.org (beta)
- Manage core and contrib as dependencies
- Both Drupal 7 and 8
Why?
- "Getting off the island"
- Better versioning support
- Easier updates
- Automatic dependency management
Add a new repository
$ composer config \
repositories.drupal composer \
https://packages.drupal.org/8
composer.json
{
"repositories": {
"drupal": {
"type": "composer",
"url": "https://packages.drupal.org/8"
}
}
}
Custom directories
"extra": {
"installer-paths": {
"modules/contrib/{$name}": ["type:drupal-module"],
"profiles/contrib/{$name}": ["type:drupal-profile"],
"themes/contrib/{$name}": ["type:drupal-theme"]
}
}
Adding Modules
$ composer require drupal/pathauto:^1.0
...
- Installing drupal/token (1.0.0-beta2)
Downloading: 100%
- Installing drupal/ctools (3.0.0-alpha27)
Downloading: 100%
- Installing drupal/pathauto (1.0.0-beta1)
Downloading: 100%
Adding Modules with Dependencies
$ composer require drupal/address:^1.0
...
- Installing commerceguys/addressing (v1.0.0-beta1)
Downloading: 100%
...
- Installing drupal/address (1.0.0-rc3)
Downloading: 100%
Composer template for Drupal projects
- Downloads core into
web/
- Custom directories for modules, themes, profiles
- Manages directories and file permissions
- Includes Drush and Drupal Console
Composer template for Drupal projects
$ composer create-project \
drupal-composer/drupal-project:8.x-dev \
some-dir --stability dev \
--no-interaction
Resources
- Using Composer to manage Drupal site dependencies - https://www.drupal.org/node/2718229
- Composer template for Drupal projects - https://github.com/drupal-composer/drupal-project