Skip to content

edersoares/composer-plug-and-play

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Composer Plug and Play

Tests Latest Release License

Adds to Composer, PHP's dependency manager, the ability to plug and play packages without necessarily installing a new dependency on composer.json.

Installation

Composer Plug and Play requires Composer 2.3.0 or newer.

composer require dex/composer-plug-and-play

Global installation

You can install Composer Plug and Play globally to use its abilities in all your local projects.

composer global require dex/composer-plug-and-play

Usage

Initialize a plug and play structure:

composer plug-and-play:init

Create or clone a Composer package into packages/<vendor>/<package> folder and run:

composer plug-and-play

Additional configuration

You can add some additional configuration in packages/composer.json to add more data in the final resolution of the composer.json file.

Commands

All commands use the plug-and-play.json and plug-and-play.lock files as source to project dependencies instead of composer.json and composer.lock original files.

You can use composer pp and composer pp:* as alias for all commands.

  • plug-and-play: installs plug and play dependencies together project dependencies.
  • plug-and-play:add: require a package into packages/composer.json.
  • plug-and-play:dump: same that composer dump-autoload, but using plug-and-play files.
  • plug-and-play:init: initialize plug and play plugin.
  • plug-and-play:install: same that composer install, but using plug-and-play files.
  • plug-and-play:reset: remove plug-and-play files.
  • plug-and-play:run: same that composer run-script, but using plug-and-play files.
  • plug-and-play:update: same that composer update, but using plug-and-play files.

Directories and files

Composer Plug and Play plugin needs a packages folder in the project root directory where the plug and play structure will live.

The plug-and-play.json and plug-and-play.lock files will contain the real project dependencies and plug and play dependencies.

Your project directory will look like this:

|- packages 
|  |- <vendor-name>
|  |  |- <plug-and-play-package>
|  |     |- composer.json
|  |     |- composer.lock
|  |- composer.json
|  |- plug-and-play.json
|  |- plug-and-play.lock
|
|- vendor
|  |- <vendor-name>
|     |- <require-package>
|        |- composer.json
|        |- composer.lock
|
|- composer.json
|- composer.lock

Ignore plugged packages

Sometimes you may need to ignore a package that is under development, for that adds in packages/composer.json something like this and run composer plug-and-play.

{
    "extra": {
        "composer-plug-and-play": {
            "ignore": [
                "dex/fake"
            ]
        }
    }
}

Require dev dependencies from plugged packages

When developing some package or library you may need to require its dev dependencies, for that adds in packages/composer.json something like this and run composer plug-and-play that the require-dev dependencies will be installed.

{
    "extra": {
        "composer-plug-and-play": {
            "require-dev": [
                "dex/fake"
            ]
        }
    }
}

Autoload (strategy)

You may have some problems with symlinks and recursion when developing packages inside another application or package, for that, you can use experimental:autoload strategy.

This strategy will create a simple copy of your composer.json in packages/vendor directory to do a symlink from your original vendor directory.

To activate it, you should change your packages/composer.json.

{
    "extra": {
        "composer-plug-and-play": {
            "autoload-dev": ["dex/fake"],
            "require-dev": ["dex/fake"],
            "strategy": "experimental:autoload"
        }
    }
}

You must add to autoload-dev the packages that you want to map its autoload and add to require-dev the packages that you want to require its dev dependencies.

License

Composer Plug and Play is licensed under the MIT license. See the license file for more details.