Skip to content

About

A composer installer for installing CakePHP plugins.

Topics

Resources

Stars

33 stars

Watchers

22 watching

Forks

Repository files navigation

CakePHP Plugin Installer

Build Status Latest Stable Version Total Downloads Software License

A composer installer for installing CakePHP plugins.

This installer ensures your application is aware of CakePHP plugins installed by composer in vendor/.

Usage

Your CakePHP application should already depend on cakephp/plugin-installer, if not in your CakePHP application run:

composer require cakephp/plugin-installer

Your plugins themselves do not need to require cakephp/plugin-installer. They only need to specify the type in their composer config:

"type": "cakephp-plugin"

App Plugins

Plugins in your application's plugins/ directory are added to the generated cakephp-plugins.php as well. If a plugin exists both there and in vendor/, the one in plugins/ is used. This lets you work on a local copy of a plugin that is also installed through composer.

Multiple Plugin Paths

If your application uses multiple plugin paths. In addition to configuring your application settings you will also need to update your composer.json to ensure the generated cakephp-plugins.php file is correct:

// Define the list of plugin-paths your application uses.
"extra": {
    "plugin-paths": ["plugins", "extra_plugins"]
}

Plugin Setup

For the installer to work properly ensure that your plugin's composer config file has a proper autoload section. Assuming your plugin's namespace is "MyPlugin" the autoload section would be like:

"autoload": {
    "psr-4": {
        "MyPlugin\\": "src/"
    }
}

Not strictly necessary for the working of the installer but ideally you would also have an "autoload-dev" section for loading test files:

"autoload": {
    "psr-4": {
        "MyPlugin\\": "src/"
    }
},
"autoload-dev": {
    "psr-4": {
        "MyPlugin\\Test\\": "tests/",
        "Cake\\Test\\" : "vendor/cakephp/cakephp/tests/"
    }
}

If your top level namespace is a vendor name then your namespace to path mapping would be like:

"autoload": {
    "psr-4": {
        "MyVendor\\MyPlugin\\": "src/"
    }
},
"autoload-dev": {
    "psr-4": {
        "MyVendor\\MyPlugin\\Test\\": "tests/",
        "Cake\\Test\\" : "vendor/cakephp/cakephp/tests/"
    }
}

Generating Manually

If you need to generate cakephp-plugins.php separately, you can simply run the dumpautoload command:

composer dumpautoload

You cannot use --no-scripts with dumpautoload or cakephp-plugins.php will not generate.

If you don't want to re-generate the entire autoload dump, you can run just the scripts:

composer run-script post-autoload-dump

Please see composer documentation for details.

About

A composer installer for installing CakePHP plugins.

Topics

Resources

Stars

33 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages