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