|
# gradio-ui |
|
|
|
This folder contains all of the Gradio UI and component source code. |
|
|
|
- [set up](#setup) |
|
- [running the application](#running-the-application) |
|
- [local development](#local-development) |
|
- [building for production](#building-for-production) |
|
- [quality checks](#quality-checks) |
|
- [ci checks](#ci-checks) |
|
|
|
## setup |
|
|
|
This folder is managed as 'monorepo' a multi-package repository which make dependency management very simple. In order to do this we use `pnpm` as our package manager. |
|
|
|
Make sure [`pnpm`](https://pnpm.io/) is installed by [following the installation instructions for your system](https://pnpm.io/installation). |
|
|
|
You will also need `node` which you probably already have |
|
|
|
## running the application |
|
|
|
Install all dependencies: |
|
|
|
```bash |
|
pnpm i |
|
``` |
|
|
|
This will install the dependencies for all packages and link any local packages |
|
|
|
## local development |
|
|
|
To develop locally, open two terminal tabs from the root of the repository. |
|
|
|
Run the python test server, from the root directory: |
|
|
|
```bash |
|
cd demo/kitchen_sink |
|
python run.py |
|
``` |
|
|
|
This will start a development server on port `7860` that the web app is expecting. |
|
|
|
Run the web app: |
|
|
|
```bash |
|
pnpm dev |
|
``` |
|
|
|
## building for production |
|
|
|
Run the build: |
|
|
|
```bash |
|
pnpm build |
|
``` |
|
|
|
This will create the necessary files in `js/app/public` and also in `gradio/templates/frontend`. |
|
|
|
## quality checks |
|
|
|
The repos currently has two quality checks that can be run locally and are run in CI. |
|
|
|
### formatting |
|
|
|
Formatting is handled by [`prettier`](https://prettier.io/) to ensure consistent formatting and prevent style-focused conversations. Formatting failures will fails CI and should be reoslve before merging. |
|
|
|
To check formatting: |
|
|
|
```bash |
|
pnpm format:check |
|
``` |
|
|
|
If you have formatting failures then you can run the following command to fix them: |
|
|
|
```bash |
|
pnpm format:write |
|
``` |
|
|
|
### type checking |
|
|
|
We use [TypeScript](https://www.typescriptlang.org/) to provide static types to javascript code. These checks are also run in CI. |
|
|
|
to typecheck the code: |
|
|
|
```bash |
|
pnpm ts:check |
|
``` |
|
|
|
## ci checks |
|
|
|
Currently the following checks are run in CI: |
|
|
|
### static checks |
|
|
|
- Format check (`pnpm format:check`) |
|
- Build css (`pnpm css`) |
|
- Build client (`pnpm build`) |
|
- Type check (`pnpm ts:check`) |
|
- Unit tests (`pnpm test:run`) |
|
|
|
### functional test |
|
|
|
``` |
|
pip install -r demo/outbreak_forecast/requirements.txt |
|
pnpm exec playwright install chromium |
|
pnpm exec playwright install-deps chromium |
|
pnpm test:browser:full |
|
``` |
|
|