GitHub: openmrs-esm-module-config
npm: @openmrs/esm-module-confg
What is this?
openmrs-esm-module-config is the configuration library for OpenMRS microfrontends.
What does an OpenMRS frontend configuration file look like?
OpenMRS frontend configuration files are JSON files containing module names as top-level elements. All configuration elements are optional. The available configuration elements for each module should be documented in the module's wiki page.
Here's an example!
{
"@openmrs/esm-login": {
"logo": {
"src": "https://pbs.twimg.com/media/C1w_czvWgAAWONL.jpg"
}
},
"@openmrs/esm-home": {
"search": {
"numResultsPerPage": 20
}
}
}
How do I add a configuration file to my OpenMRS implementation?
There are two methods for doing so.
The Simple Way
This is the method to use if you do not have an esm-root-config override. All you need to do is upload your configuration file and add its URL to your import map as a module named config-file
. If you are serving your microfrontends from your OpenMRS server, you can simply add your config file to your server's frontend/
directory. Your import map will then look like
{
"imports": {
...
"config-file": "/openmrs/frontend/config.json"
...
}
}
The Flexible Way
This method requires you have an esm-root-config override. This allows you to have multiple configuration files, which will be merged together in an order that you specify. You add your configuration files to your root override module, import
them, and provide them to esm-module-config
. All this must happen before you register your applications.
Example code:
import { provide } from "@openmrs/esm-module-config";
import pihConfig from "./pih-config.json";
import pihMexicoConfig from "./pih-mexico-config.json";
provide(pihConfig);
provide(pihMexicoConfig);
The configuration elements in pih-mexico-config.json
will take priority over those in pih-config.json
. You can break up your configuration files into hierarchies, or simply by modules or groups of modules.