DrupalTM Blog
Welcome to our Drupal blog! Stay up to date with the latest Drupal news, best practices, and techniques.
Composer is a tool for managing dependencies in PHP projects, and it is essential for managing Drupal and its dependencies, including modules, themes, and libraries. Ensure Composer is installed on your local machine before executing any Composer commands.
Installing Drupal
For Drupal 10:
Use the following command to create a new Drupal project
composer create-project drupal/recommended-project my_site_nameFor Drupal 7:
composer create-project drupal-composer/drupal-project:7.x-dev -n my_site_nameThis will create a project in the my_site_name directory, automatically downloading the latest stable version of Drupal and its dependencies. The web root will be the my_site_name/web directory.
Specifying a Version:
To download a specific version of Drupal, append the version number:
composer create-project drupal/recommended-project:9.3.12 my_site_nameFor the latest version of a specific release series:
composer create-project drupal/recommended-project:^9.3 my_site_nameUsing Docker:
If using a Docker-based workflow:
docker run --rm -i --tty -v $PWD:/app composer create-project drupal/recommended-project my_site_name --ignore-platform-reqsInstalling Drupal
Via Web Interface:
After downloading, navigate to your site's URL to start the setup process, which includes entering database credentials and setting up an admin user.
Via Command Line:
Add Drush to your project:
composer require drush/drushInstall Drupal using Drush:
drush site:installQuickstart Feature:
For a quick demo site:
php ./web/core/scripts/drupal quick-start demo_umamiModified Install:
To modify composer.json before installation:
Run:
composer create-project --no-install drupal/recommended-project my_site_nameEdit
composer.jsonto suit your needs.Run:
composer install
Managing Modules and Themes
Downloading Modules and Themes:
To download contributed modules or themes:
module_nameExample:
composer require drupal/tokenSpecifying a Version:
composer require 'drupal/module_name:^1.5'Defining Custom Directories
Modify the installer-paths section of composer.json:
"extra": { "installer-paths": { "modules/contrib/{$name}": ["type:drupal-module"], "themes/contrib/{$name}": ["type:drupal-theme"] } }Downloading Third-Party Libraries
Add Asset Packagist for managing third-party JavaScript and CSS packages:
Add the Composer Installers Extender:
composer require oomphinc/composer-installers-extenderAdd Asset Packagist to the "repositories" section of
composer.json:"repositories": [ { "type": "composer", "url": "https://asset-packagist.org" } ]Update the
installer-pathssection:"extra": { "installer-paths": { "web/libraries/{$name}": [ "type:drupal-library", "type:npm-asset", "type:bower-asset" ] } }
Managing Existing Sites
For sites initially installed without Composer, use the Composerize Drupal plugin to generate an updated composer.json.
Updating and Patching
Updating Drupal Core and Modules:
Use Composer to manage updates for both core and contributed modules.
Applying Patches:
Add the cweagans/composer-patches package to handle patches:
composer require cweagans/composer-patches:~1.0 --update-with-dependenciesUpdate composer.json to include patches:
"extra": { "patches": { "drupal/core": { "3212792: Views button hover effect is odd": "patches/3212792-2.patch" } } }Requiring Specific Commits:
To require a specific commit of a module:
composer require drupal/eck:1.x-dev#ecf376By following these guidelines, you can effectively manage your Drupal projects and dependencies using Composer.