Contributing

Development server

When developing, run the following from the root-level directory:

npm install
npm run build
npm start

All packages will be live-built, and a live development server showcasing components with hot reload enabled will then run at localhost:8080.

Coding style

All the JavaScript code in this project conforms to the prettier coding style. Code is automatically prettified upon commit using precommit hooks.

Documentation

We use mkdocs to build our documentation. To run documentation locally, run:

pip install -r requirements.docs.txt
mkdocs serve

Documentation will be served on localhost:8000.

Tests

npm test

Code coverage

Code coverage reports are currently available only for the @rjsf/core package. They are generated using nyc each time the npm test-coverage script is run. The full report can be seen by opening ./coverage/lcov-report/index.html.

Releasing

To release, go to the master branch and then run:

npx lerna version

Make sure you use semver for version numbering when selecting the version. The command above will create a new version tag and push it to GitHub.

Note that if you are releasing a new major version, you should bump the peer dependency @rjsf/core in the package.json files of other packages accordingly.

Then, create a release in the Github "Releases" tab and add a description of the changes in the new release. You can copy the latest changelog entry in CHANGELOG.md to make the release notes, and update as necessary.

This will trigger a GitHub Actions pipeline that will build and publish all packages to npm.

The package is published through an automation token belonging to the rjsf-bot user on npm. This token is stored as the NPM_TOKEN secret on GitHub Actions.

Releasing docs

Docs are automatically released using Read The Docs based on the latest commits from the master branch.

Releasing the playground

The playground automatically gets deployed from GitHub Pages.

If you need to manually publish the latest playground to https://rjsf-team.github.io/react-jsonschema-form/, though, run:

cd packages/playground
npm run publish-to-gh-pages