Drupal Bridge
Composer
In your composer.json, define the Drupal root relative to the composer.json file.
drupal-root
is the only option required for the Composer integration., (*1)
{
"extra": {
"drupal-root": "docroot/"
}
}
The Composer integration works well with [composer/installers
][] but this is not an
explicit dependency. When composer/installers
is available, you can install Drupal
modules, themes, profiles and Drush plugins., (*2)
The snippet below is an example based on the composer/installers
documentation and
depends on drupal-root
being set to docroot/
(as above)., (*3)
{
"extra": {
"installer-paths": {
"docroot/profiles/special/modules/custom/amazing": [
"somebody/amazing-module"
],
"docroot/profiles/special/": [
"somebody/special-profile"
],
"docroot/sites/all/modules/{$name}/": [
"type:drupal-module"
],
"docroot/sites/all/themes/{$name}/": [
"type:drupal-theme"
],
"docroot/sites/all/libraries/{$name}/": [
"type:drupal-library"
],
"docroot/profiles/{$name}/": [
"type:drupal-profile"
],
"docroot/sites/all/drush/{$name}/": [
"type:drupal-drush"
]
}
}
}
The name of the directory where a profile is installed apparently must be named precisely
for the same as its info file., (*4)
Drupal install
{
"repositories": [
{
"type": "package",
"package": {
"name": "drupal/drupal",
"version": "7.x-dev",
"dist": {
"type": "tar",
"url": "http://ftp.drupal.org/files/projects/drupal-7.x-dev.tar.gz"
},
"source": {
"type": "git",
"url": "git://git.drupal.org/project/drupal.git",
"reference": "7.x"
},
"bin": [
"scripts/drupal.sh",
"scripts/password-hash.sh"
],
"require": {
"php": ">=5.2.4",
"ext-date": "*",
"ext-dom": "*",
"ext-filter": "*",
"ext-gd": "*",
"ext-hash": "*",
"ext-json": "*",
"ext-pcre": "*",
"ext-PDO": "*",
"ext-session": "*",
"ext-SimpleXML": "*",
"ext-SPL": "*",
"ext-xml": "*"
}
}
}
],
"require": {
"drupal/drupal": "~7.0@dev",
"drufony/drupal-bridge": "~1.0@dev"
},
"extra": {
"drupal-install": {
"symlink": true,
"relative": true
}
},
"scripts": {
"create-sites-dir": "Bangpound\\Bridge\\Drupal\\Composer\\ScriptHandler::createSitesDir",
"post-install-cmd": [
"Bangpound\\Bridge\\Drupal\\Composer\\ScriptHandler::prepareDrupalRoot"
],
"post-update-cmd": [
"Bangpound\\Bridge\\Drupal\\Composer\\ScriptHandler::prepareDrupalRoot"
]
}
}
When you define drupal/drupal
as a dependency, the post-install-cmd
and
post-update-cmd
scripts will (by default) create a relative symlink of the includes
,
misc
, modules
, and themes
directory. The profiles
directory is left out so that
these can be managed by the composer/installers
plugin for Drupal profile projects., (*5)
Core profiles
The core profile for standard
and minimal
installs can be obtained from the
Drufony package repository. Just merge this snippet into your composer.json file. Also
configure your installer-paths
as described above so that the profiles are installed
into the Drupal root's profiles
directory., (*6)
{
"repositories": [
{
"type": "composer",
"url": "http://drufony.github.io/packages.json"
}
],
"require": {
"drupal/minimal": "7.*@dev",
"drupal/standard": "7.*@dev"
}
}
Drush command
{
"require": {
"drush/drush": "dev-master"
},
"scripts": {
"drush": "Bangpound\\Bridge\\Drupal\\Drush\\Composer\\ScriptHandler::drushCommand"
}
}
composer drush updatedb