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