Hi! We're really excited that you are interested in contributing to Redoc. Before submitting your contribution though, please make sure to take a moment and read through the following guidelines.
- Before filing a new issue, try to make sure your problem doesn’t already exist.
- The best way to get your bug fixed is to provide a reduced test case.
Before submitting a pull request, please make sure the following is done:
- Fork the repository and create your branch from main.
- Run
npm install
in the repository root. - If you’ve fixed a bug or added code that should be tested, add tests!
- Ensure the test suite passes (
npm test
). Tip:npm test -- --watch TestName
is helpful in development. - Format your code with prettier (
npm run prettier
).
You need Node.js at v12.0.0+
.
After cloning the repo, run:
$ npm install # or npm
# dev-server, watch and auto reload playground
$ npm start
# start playground app in production environment
$ npm run start:prod
# runt tslint
$ npm run lint
# try autofix tslint issues
$ npm run lint -- --fix
# run unit tests
$ npm run unit
# run e2e tests
$ npm run e2e
# Make sure you have created bundle before running e2e test
# E.g. run `npm run bundle` and wait for the finishing process.
# open cypress UI to debug e2e test
$ npm run cy:open
# run the unit tests (includes linting and license checks)
$ npm test
# prepare bundles
$ npm run bundle
# format the code using prettier
$ npm run prettier
# auto-generate changelog
$ npm run changelog
There are some other scripts available in the scripts
section of the package.json
file.
-
benchmark
: contains basic perf benchmark. Not fully ready yet -
demo
: contains project demo with demo specs and HMR playground used in developmentdemo/playground
: HMR Playground used in development
-
docs
: contains extra docs (linked from README.md) -
e2e
: contains e2e tests. The e2e tests are written and run with Cypress. -
src
: contains the source code. The codebase is written in Typescript. CSS styles are managed with Styled components. State is managed by MobXsrc/common-elements
: contains common Styled elements or components used in multiple placessrc/components
: contains main visual componentssrc/services
: contains different services used by Redoc including MobX storessrc/services/models
: contains classes for OpenAPI entities (e.g. Response, Operations, etc)src/types
: contains extra typescript typings including OpenAPI doc typingssrc/utils
: utility functionssrc/styled-components.ts
: - reexports styled-components with proper typescript annotations using themesrc/theme.ts
: - default theme (colors, fonts, etc) used by all the components