- Note
- Examples in this page are available in the
core/doc/examples/
directory.
Application
The root composer.json
must:
- Define repository, where all this stuff is located.
- Require the core and all plugins. It can also require any other composer package as usual.
- Direct PSR-4 autoloader to app/class directory.
- Change vendor directory to lib.
Everything else is as usual.
{
"name": "vendor/site",
"description": "Web site at example.com",
"license": "Apache-2.0",
"authors": [
{
"name": "Author Name",
"email": "author@example.com"
}
],
"repositories": [
{ "type": "composer", "url": "https://akvarko.frozen-doe.net/composer/" }
],
"minimum-stability": "dev",
"prefer-stable": true,
"require": {
"cascade/core": "dev-master",
"cascade/admin": "dev-master",
"cascade/block_editor": "dev-master",
"cascade/duf": "dev-master",
"cascade/git": "dev-master",
"cascade/smalldb": "dev-master"
},
"autoload": {
"psr-4": { "Vendor\\Site\\": "app/class/" }
},
"config": {
"bin-dir": "bin",
"vendor-dir": "lib",
"prepend-autoloader": false
},
"extra": {
}
}
See examples/composer.app.json.
Plugins
Each plugin is also Composer package, so it has its own composer.json
. The package is of type cascade-plugin
and it must require cascade/composer-plugin
package. It can require any other plugin or 3rd party package as well.
In addition, the plugin name must be set in extra.plugin
option. This plugin name is the same as plugin directory.
Like the core and the application, the plugin also has PSR-4 autoloader directed to its class/
directory.
{
"name": "vendor/example",
"type": "cascade-plugin",
"description": "Description of vendor/example",
"license": "Apache-2.0",
"authors": [
{
"name": "Author Name",
"email": "author@example.com"
}
],
"extra": {
"plugin": "example"
},
"autoload": {
"psr-4": { "Vendor\\Example\\": "class/" }
},
"require": {
"cascade/composer-plugin": ">=1.1"
}
}
See examples/composer.plugin.json.