A composer installer for installing CakePHP plugins.
This installer ensures your application is aware of CakePHP plugins installed
by composer in vendor/.
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"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.
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"]
}
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/"
}
}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.