Cosmos Plugins
A Cosmos plugin is a wrapper for two plugin types: server plugins and UI plugins. Each plugin type has a distinct API and runs in a different environment. Combining both into a single Cosmos plugin adds full-stack capabilities to React Cosmos with a single package.
Creating a Plugin
Create a cosmos.plugin.json file:
{
"name": "Magic plugin",
"server": "serverPlugin.js",
"ui": "uiPlugin.js"
}This JSON config is the plugin's entry point. A plugin name and at least one plugin type is required.
The server and ui paths are resolved relative to the config's parent
directory.
See the individual guides for each plugin type:
Enabling a Plugin
Add it to the plugins option in the cosmos.config.json of the host project:
{
"plugins": ["../packages/magic-plugin/cosmos.plugin.json"]
}If the Cosmos plugin is an NPM package, add the name of the package to plugins instead:
{
"plugins": ["react-cosmos-plugin-magic"]
}Publishing a Plugin
To publish a Cosmos plugin as an NPM package, set the main field in its package.json to "cosmos.plugin.json" (or a different path where the Cosmos plugin config is located):
{
"name": "react-cosmos-plugin-magic",
"version": "1.0.0",
"main": "cosmos.plugin.json"
}Existing Plugins
Open Fixture Plugin
This combines a server plugin with a UI plugin. It adds a renderer action that opens the selected fixture file in your default editor.
npm i -D react-cosmos-plugin-open-fixture{
"plugins": ["react-cosmos-plugin-open-fixture"]
}Boolean Input Plugin
This is a UI plugin that turns boolean inputs in the Control Panel from a true/false button to a checkbox input.
npm i -D react-cosmos-plugin-boolean-input{
"plugins": ["react-cosmos-plugin-boolean-input"]
}