drupal-composer/preserve-paths

Composer plugin for preserving custom paths and supporting nested packages

Package info

github.com/drupal-composer/preserve-paths

Type:composer-plugin

pkg:composer/drupal-composer/preserve-paths

Statistics

Installs: 1 128 359

Dependents: 9

Suggesters: 0

Stars: 27

Open Issues: 13

0.1.6 2020-11-14 20:28 UTC

Requires

  • composer-plugin-api: ^1.0 || ^2.0

Suggests

None

Provides

None

Conflicts

None

Replaces

None

GPL-2.0-or-later 2f86a503f1f7838f5f7f399a17edd4d16eb95034

installercomposer-plugincustom pathnested package

This package is auto-updated.

Last update: 2026-06-15 09:07:48 UTC


README

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 or composer update
  • place packages within the directory of another package (using a composer installer like composer/installers or davidbarratt/custom-installer)

Installation

Simply install the plugin with composer: composer require drupal-composer/preserve-paths

Configuration

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"
 ]
 }
}

Example

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"
 ]
 }
}