Thanks for being willing to contribute!
Working on your first Pull Request? You can learn how from this free series How to Contribute to an Open Source Project on GitHub
- Fork and clone the repo
npm run setup
to setup and validate your clone of the project- Create a branch for your PR
Tip: Keep your
master
branch pointing at the original repository and make pull requests from branches on your fork. To do this, run:git remote add upstream https://github.com/downshift-js/downshift.git git fetch upstream git branch --set-upstream-to=upstream/master master
This will add the original repository as a "remote" called "upstream," Then fetch the git information from that remote, then set your local
master
branch to use the upstream master branch whenever you rungit pull
. Then you can make all of your pull request branches based on thismaster
branch. Whenever you want to update your version ofmaster
, do a regulargit pull
.
Please make sure to run the tests before you commit your changes. You can run
npm run test:update
which will update any snapshots that need updating. Make
sure to include those changes (if they exist) in your commit. We also track the
bundle sizes in a .size-snapshot.json
file, this will likely update when you
make changes to the codebase.
There are quite a few test scripts that run as part of a validate
script in
this project:
- lint - ESLint stuff, pretty basic. Please fix any errors/warnings :)
- build-and-test - This ensures that the built version of
downshift
is what we expect. These tests live inother/misc-tests/__tests__
. - test:cover - This is primarily unit tests on the source code and accounts for
most of the coverage. We enforce 100% code coverage on this library. These
tests live in
src/__tests__
- test:ts - This runs
tsc
on the codebase to make sure the type script definitions are correct for thetsx
files in thetest
directory. - test:ssr - This ensures that downshift works with server-side rendering (it
can run and render in an environment without the DOM). These tests live in
other/ssr/__tests__
- test:cypress - This runs tests in an actual browser. It runs and tests the
storybook examples. These tests live in
cypress/integration
.
There are git hooks set up with this project that are automatically installed
when you install dependencies. They're really handy, but are turned off by
default (so as to not hinder new contributors). You can opt into these by
creating a file called .opt-in
at the root of the project and putting this
inside:
pre-commit
Please checkout the the open issues
Also, please watch the repo and respond to questions/bug reports/feature requests! Thanks!