This installer ensures that plugins and skins end up in the correct directory:
- Plugins -
<roundcube-root>/plugins/plugin-name - Skins -
<roundcube-root>/skins/skin-name
- create a
composer.jsonfile in your plugin's repository - add the following contents
{
"name": "<your-vendor-name>/<plugin-name>",
"type": "roundcube-plugin",
"license": "GPL-3.0-or-later",
"require": {
"roundcube/plugin-installer": ">=0.3.0"
}
}
{
"name": "<your-vendor-name>/<skin-name>",
"type": "roundcube-skin",
"license": "GPL-3.0-or-later",
"require": {
"roundcube/plugin-installer": ">=0.3.0"
}
}
For both plugins and skins you can, optionally, add the following section to your composer.json file. All properties are optional and provided below with example values.
persistent-files defines a list of files which should be maintained across updates. By default only config.inc.php is maintained. The array should contain paths relative to the root of your plugin.
"extra": {
"roundcube": {
"min-version": "1.4.0",
"sql-dir": "./SQL",
"post-install-script": "./bin/install.sh",
"post-update-script": "./bin/update.sh",
"persistent-files": ["config.inc.php", "skins/elastic/_custom.less"]
}
}
This installer will ask if you want to enable each plugin or skin as it is installed. To always enable all plugins or skins add enable-plugin/enable-skin to the config section in the composer.json in the root of your Roundcube directory.
When uninstalling packages Composer will not remove the folder. To remove the folder set uninstall-remove-folder in your config.
"config": {
"roundcube": {
"enable-plugin": true,
"enable-skin": true,
"uninstall-remove-folder": true
}
}
Submit your plugin or skin to Packagist.
- clone Roundcube
cp composer.json-dist composer.json- add your plugin in the
requiresection of composer.json composer.phar install
Read the whole story at plugins.roundcube.net.