Composer plugin for preserving paths while installing, updating or uninstalling packages.
This way you can:
- provide custom files or directories that will not be overwritten on
composer install
orcomposer update
- place packages within the directory of another package (using a composer installer like composer/installers or davidbarratt/custom-installer)
Simply install the plugin with composer: composer require drupal-composer/preserve-paths
For configuring the paths you need to set preserve-paths
within the extra
of your root composer.json
.
{
"extra": {
"preserve-paths": [
"web/sites/all/modules/contrib",
"web/sites/all/themes/contrib",
"web/sites/all/libraries",
"web/sites/all/drush"
]
}
}
An example composer.json using composer/installers:
{
"repositories": [
{
"type": "composer",
"url": "https://packages.drupal.org/7"
}
],
"require": {
"composer/installers": "^1.2",
"drupal-composer/preserve-paths": "0.1.*",
"drupal/views": "3.*",
"drupal/drupal": "7.*"
},
"config": {
"vendor-dir": "vendor"
},
"extra": {
"installer-paths": {
"web/": ["type:drupal-core"],
"web/sites/all/modules/contrib/{$name}/": ["type:drupal-module"],
"web/sites/all/themes/contrib/{$name}/": ["type:drupal-theme"],
"web/sites/all/libraries/{$name}/": ["type:drupal-library"],
"web/sites/all/drush/{$name}/": ["type:drupal-drush"],
"web/profiles/{$name}/": ["type:drupal-profile"]
},
"preserve-paths": [
"web/sites/all/modules/contrib",
"web/sites/all/themes/contrib",
"web/sites/all/libraries",
"web/sites/all/drush",
"web/sites/default/settings.php",
"web/sites/default/files"
]
}
}