We are using Yarn workspace to set up UI's package architecture that consists of:
- mlp-ui – React app (CRA) with common UI functionality.
- @caraml-dev/ui-lib – library of shared UI components.
To work with the UI code, you will need to have the following tools installed:
To fetch all the dependencies and set a local development environment, run:
yarnYou can start a development server for the MLP UI outside of a running MLP server by running:
yarn startThis will open a browser window with the React app running on http://localhost:3001/. The page will reload if you make edits to the source code in both packages. You will also see any lint errors in the console.
Due to a "proxy": "http://localhost:8080/v1" setting in the mlp-ui's package.json file, any API requests from the React UI are proxied to localhost on port 8080 by the development server. This allows you to run a normal MLP server to handle API requests, while iterating separately on the UI.
[browser] ----> [localhost:3001 (dev server)] --(proxy API requests)--> [localhost:8080/v1 (MLP API)]
We use lint-staged for the linter. To detect and automatically fix lint errors against staged git files, run:
yarn lintThis is also available via the lint-ui target in the main MLP Makefile.
To build a production-optimized version of the React app to a build subdirectory, run:
yarn app buildNOTE: You will likely not need to do this directly. Instead, this is taken care of by the build target in the main MLP Makefile when building the full binary.
To build a MLP binary that includes a compiled-in version of the production build of the React app, change to the root of the repository and run:
make buildThis installs npm dependencies via Yarn, builds a production build of the React app, and then finally compiles in all web assets into the MLP binary.
It is possible to run a command for the specific package (app/lib) from the root directory:
yarn app <command>or
yarn lib <command>For example, it's possible to build a library by running:
yarn lib build