Coder Social home page Coder Social logo

composer-plug-and-play's Introduction

Composer Plug and Play

Tests Latest Release License

Add to Composer, a dependency manager for PHP, 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.

composer-plug-and-play's People

Contributors

edersoares avatar jrbarros avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.