Thank you for helping out with react-native-svg! We'd like to make contributions as pleasant as possible, so here's a small guide of how we see it. Happy to hear your feedback about anything, so please let us know.
- Fork this repository
- Clone your fork
- Make a branch for your feature or bug fix (i.e.
git checkout -b added-getfoobar
) - Work your magic
- Execute
yarn link
when done.
You can test your changes on any React Native application you have set up locally. You can also use the testing application available at https://github.com/msand/react-native-svg-e2e/ or: https://github.com/magicismight/react-native-svg-example
Just cd
to your application and type yarn link react-native-svg
to make your app use your local modified package instead of the one from npmjs.com (this is what point 5 was about in the previous section).
If you made changes in the native code, don't forget to run react-native link
before building your React Native application so that latest changes are taken into account.
We use typescript
for type checks, eslint
with prettier
for linting/formatting, jest/detox
for tests (unit and e2e). All tests are run on travis-ci for all opened pull requests, but you should use them locally when making changes.
yarn test
: Run all tests, except for e2e (see note below).yarn lint
: Runeslint
check.yarn tsc
: Runtypescript
check.yarn flow
: Runflow
type check.yarn jest
: Runjest
type check.
Currently e2e tests exist here: https://github.com/msand/react-native-svg-e2e/
When you're sending a pull request:
- Communication is a key. If you want fix/add something, please open new/find existing issue, so we can discuss it.
- We prefer small pull requests focused on one change, as those are easier to test/check.
- Please make sure that all tests are passing on your local machine.
- Follow the template when opening a PR.
All PRs are merged into the develop
branch, following conventional commit message. Combined with semantic versioning, this allows us to have a frequent releases of the library.
Note: We don't force this convention on Pull Requests from contributors, but it's a clean way to see what type of changes are made, so feel free to follow it.
Most notably prefixes you'll see:
- fix: Bug fixes, triggers patch release
- feat: New feature implemented, triggers minor
- chore: Changes that are not affecting end user (CI config changes, scripts, "grunt work")
- docs: Documentation changes.
- perf: A code change that improves performance.
- refactor: A code change that neither fixes a bug nor adds a feature.
- test: Adding missing tests or correcting existing tests.
We use Semantic Release to release new versions of the library when changes are merged into the master
branch, which we plan to keep stable. Bug fixes take priority in the release order. The master branch should always contain the latest released code.
You can report issues on our bug tracker. Please search for existing issues and follow the issue template when opening an one. Except no need to add any notes to the changelog as semtice released handles that automatically based on the commit messages.
By contributing to React Native Svg, you agree that your contributions will be licensed under the MIT license.