Extensions
Start using extensions and runtime plugins
Last updated
Was this helpful?
Start using extensions and runtime plugins
Last updated
Was this helpful?
Extension is a reusable, isolated part of your application. It can contain any kind of source logic modifications, source being either a or an extension.
Extensions allow to modify the source logic without editing the source code. The idea is to write additional logic - , in order to intercept the initial logic and modify it in runtime.
(webpack and babel) can also be modified from extensions.
Assuming that you have some project you are willing to use mosaic in, install Mosaic in your project by following any setup guide: , or . If you want to start a project from scratch, just create it with Next, CRA or manually with Webpack and follow the same steps.
A should be set for the piece of functionality we are willing to make available for plugins. Using the "" syntax is the most convenient option to do it. Our Babel plugin transforms this syntax into a simple function invocation.
In this guide, you will operate with the code depicted below, located in the corresponding directory.
Within your project, create a directory for your Mosaic modules (extensions). Conventionally, it is <root>/packages
Remember that there is a naming convention for these files - their names should end with .plugin.js
Let's launch the project and see what the initial code will give us. If you followed the guide correctly, you will see that the behavior of getRoutes
function has changed and now it acts as follows!
It will also log some stuff into the console (explained above).
Extensions can contain not only runtime logic, but also build configuration modifications.
In that directory, create a module with proper package.json , seen below. It is very important for this module to be recognised as Mosaic module by the plugin system.
it into the package it interacts with. Remember to launch one of the scripts below in order to apply your installation!
Remember to it afterwards!
Create a in the - src/plugin/
the initial logic as you wish! You may have several plugins on a single namespace, if they are compatible with each other all of them will work!
The plugin system, although is one of the main features of Mosaic, is not the only one. To find out more about it, check out the dedicated to it.