Kasulejoseph / openmrs-esm-core

The core modules of the OpenMRS Frontend system

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

👋 New to our project? Be sure to review the OpenMRS 3 Frontend Developer Documentation. You may find the Map of the Project especially helpful.

Also see the API documentation for @openmrs/esm-framework, which is contained in this repository.

OpenMRS CI Check documentation

Below is the documentation for this repository.

OpenMRS Frontend Core

This is a monorepo containing the core packages for the OpenMRS Frontend. These packages handle the "cross-cutting concerns" described in the Domain Decomposition document.

Available Packages

Application

This contains tooling and the app shell.

Framework

The following common libraries have been developed. They may also be used independently of the app shell.

All libraries are aggregated in the @openmrs/esm-framework package:

Frontend modules

A set of frontend modules provide the core technical functionality of the application.

Development

Getting Started

To set up the repository for development, run the following commands:

yarn
yarn setup

Building

To build all packages in the repository, run the following command:

yarn build

Verification of the existing packages can also be done in one step using yarn:

yarn verify

Running the app shell and the framework

yarn run:shell

run:shell will run the latest version of the shell and the framework only.

Running the frontend modules in apps

yarn run:omrs develop --sources packages/apps/<app folder>

This will allow you to develop the app similar to the experience of developing other apps.

Running the tooling

cd packages/tooling/openmrs
yarn build
./dist/cli.js

Testing

Run yarn test in the directory containing the package you want to test.

Run yarn lerna run test to run all the tests in this repository.

Linking the framework

If you want to try out changes to a framework library, you will probably want to yarn link or npm link it into a frontend module. Note that even though frontend modules import from @openmrs/esm-framework, the package you need to link is the sub-library; for example, if you are trying to test changes in packages/framework/esm-api, you will need to link it:

yarn link path/to/openmrs-esm-core/packages/framework/esm-framework
yarn link path/to/openmrs-esm-core/packages/framework/esm-api

This satisfies the build tooling, but we must do one more step to get the frontend to load these dependencies at runtime (see docs on Runtime Dependencies). Here, there are two options.

Method 1: Using the frontend dev server

In order to get your local version of the core packages to be served in your local dev server, you will need to link the tooling as well.

yarn link /path/to/esm-core/packages/tooling/openmrs.

In packages/shell/esm-app-shell, run yarn build:development --watch to ensure that the built app shell is updated with your changes and available to the patient chart. Then run your patient chart dev server as usual, with yarn start.

If you're not able to get this working, try the

Method 2: Using import map overrides

Read the dev documentation about import map overrides if you have not already.

In esm-core, start the app shell with yarn run:shell. Then, in the patient chart repository, cd into whatever packages you are working on and run yarn serve from there. Then use the import map override tool in the browser to tell the frontend to load your local patient chart packages.

Once it's working

Please note that this will result in entries being added to the package.json file in the resolutions field. These changes must be undone before creating your PR, which you can do by running yarn unlink --all in the patient chart repo.

Check your work by adding a console.log at the top level of a file you're working on in esm-api.

Version and release

To increment the version, run the following command:

yarn release

You will need to pick the next version number. We use minor changes (e.g. 3.2.03.3.0) to indicate big new features and breaking changes, and patch changes (e.g. 3.2.03.2.1) otherwise.

Note that this command will not create a new tag, nor publish the packages. After running it, make a PR or merge to main with the resulting changeset.

Once the version bump is merged, go to GitHub and draft a new release. The tag should be prefixed with v (e.g., v3.2.1), while the release title should just be the version number (e.g., 3.2.1). The creation of the GitHub release will cause GitHub Actions to publish the packages, completing the release process.

Don't run npm publish, yarn publish, or lerna publish. Use the above process.

Design Patterns

For documentation about our design patterns, please visit our design system documentation website.

About

The core modules of the OpenMRS Frontend system

License:Other


Languages

Language:TypeScript 86.6%Language:JavaScript 6.8%Language:SCSS 5.5%Language:EJS 0.5%Language:CSS 0.4%Language:Shell 0.1%