# Contributing

:tada: First off, thanks for your interest in contributing to this project! :tada:

## Code of Conduct

All contributors to this project are expected to uphold the [code of conduct](code-of-conduct.md):

> In the interest of fostering an open and welcoming environment, we as contributors and 
maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Development

Coming soon.

## Releasing

This project uses [semantic-release](https://github.com/semantic-release) and a GitHub Actions workflow to automatically publish new npm packges whenever pull requests are merged to the master branch. To enable this, we give our pull request titles semantic prefixes like `fix: ` and `feat: `. To learn more about `semantic-release` and semantic commit messages, watch [this YouTube video](https://www.youtube.com/watch?v=rCXq86FOlzQ).

### Releasing a patch version (fix)

1. Update your pull request title to have a prefix of `fix: `
1. Squash and merge the pull request
1. There is no step 3! `semantic-release` will create a new comment on the PR when the release is complete.

### Releasing a minor version (feature)

1. Update your pull request title to have a prefix of `feat: `
1. Squash and merge the pull request
1. There is no step 3! `semantic-release` will create a new comment on the PR when the release is complete.

### Releasing a major version (breaking change)

Use the following process to release new major version to npm:

1. Once your pull request has passing checks, click the [Squash and merge] button
1. Edit the first line of the extended commit body to say `BREAKING CHANGE: a short explanation of what changed`
1. Click [Confirm squash and merge]
1. Wait a moment and semantic-release should notify that a new major version was published:

![](https://git.io/JfWQn)
