This installer ensures that plugins and skins end up in the correct directory:
<roundcube-root>/plugins/plugin-name
<roundcube-root>/skins/skin-name
composer.json
file in your plugin's repository{
"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.
cp composer.json-dist composer.json
require
section of composer.jsoncomposer.phar install
Read the whole story at plugins.roundcube.net.