We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
- Submitting a fix
- Discussing the current state of the code
We use github to host code, to track issues and feature requests, as well as accept pull requests.
Before you submit a new issue or pull request, be sure to check for an existing one to reduce duplicate efforts and fragmentation.
Pull requests are the best way to propose changes to the codebase (we use Github Flow). We actively welcome your pull requests:
- Clone or Fork the repo and create your branch from
develop
. - If you've added code that should be tested, add tests.
- Ensure the test suite passes.
- Make sure your code lints.
- Submit that pull request!
Great Bug Reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
People love thorough bug reports.
We have linters and formatters running against the codebase. You can run these manually, or try to commit, and if they fail, your commit will be prohibited.
We utilize Conventional Commits with Commitlint, and semantic-release to automatically generate semantically incremented releases based on commit messages.
Review the Conventional Commits documentation for full details, but the gist is that commit messages that start with:
fix:
will produce a "bug fix" release. e.g. 0.0.Xfeat:
will produce a "feature" release. e.g. 0.X.0- a
!
appended to the typ, like:refactor!:
will produce a "major" release. e.g. X.0.0
There are many other "types" that can be used, and you should read the docs to acquaint yourself. But the point is that the commit messages will be automatically validated (to adhere to the standard) by Commitlint, and parsed by semantic-release to generate a release (including release notes) any time code is merged into main
. (Typically through a "Release" PR from develop
into main
.)