What is a Volto add-on#
There are several advanced scenarios where we might want to have more control and flexibility beyond using the plain Volto project to build a site.
We can build Volto add-on products and make them available as generic JavaScript packages that can be included in any Volto project. By doing so we can provide code and component reutilization across projects and, of course, benefit from open source collaboration.
Note
By declaring a JavaScript package as a "Volto addon", Volto provides several integration features: language features (so they can be transpiled by Babel), whole-process customization via razzle.extend.js and integration with Volto's configuration registry.
The addon can be published to an NPM registry or directly installed from github by Yarn. By using mrs-develop, it's possible to have a workflow similar to zc.buildout's mr.developer, where you can "checkout" an addon for development.
An addon can be almost anything that a Volto project can be. They can:
provide additional views and blocks
override or extend Volto's builtin views, blocks, settings
shadow (customize) Volto's (or another addon's) modules
register custom routes
provide custom Redux actions and reducers
register custom Express middleware for Volto's server process
tweak Volto's Webpack configuration, load custom Razzle and Webpack plugins
even provide a custom theme, just like a regular Volto project does.