All work on React Native CLI happens directly on GitHub. Contributors send pull requests which go through review process.
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 the repo and create your branch from
master(a guide on how to fork a repository). - Run
yarnornpm installto install all required dependencies. - Now you are ready to do the changes.
Repository is splitted into two packages:
cli- Historically, it was included inreact-nativepackage. Contains all the commands code.global-cli- Historically, it was areact-native-clipackage and the only reason this package existed was to initialize an empty project.
You can test your changes by calling cli.js directly from the cloned repository. You need to make sure the version of React Native matches the one present in devDependencies of the CLI. Otherwise, you may get unexpected errors.
node /path/to/cloned/project/packages/cli/build/index.jsYou can test your changes by installing local npm proxy - verdaccio, and publishing custom versions of @react-native-community/cli and react-native.
- Install
verdaccio
yarn global add verdaccio- Run verdaccio
verdaccio- Set npm registry to
verdaccioproxy server
npm set registry http://localhost:4873/- Clone
react-nativeand@react-native-commiunity/cli - Release new version of
@react-native-community/clito local npm proxy. If you have any issues, head over to verdaccio and check out the docs.
cd /path/to/cli/packages/cli && npm publish
- Install new version of
@react-native-community/cliinreact-nativeand publish new version of it.
# RN_CLI_VERSION is the version of localy released cli
cd /path/to/react-native && yarn add @react-native-community/cli@${RN_CLI_VERSION} && npm publish- You are ready to go
# RN_VERSION is the version of localy released react-native
react-native init --version ${RN_VERSION}- Cleanup
npm config set registry https://registry.npmjs.org/Currently we use flow for typechecking, eslint with prettier for linting and formatting the code and jest for testing.
yarn flow: runflowyarn lint: runeslintandprettieryarn test: run unit tests
We prefix our commit messages with one of the following to signify the kind of change:
- build: Changes that affect the build system or external dependencies
- ci, chore: Changes to our CI configuration files and scripts
- docs: Documentation only changes
- feat: A new feature
- fix: A bug fix
- perf: A code change that improves performance
- refactor: A code change that neither fixes a bug nor adds a feature
- style: Changes that do not affect the meaning of the code
- test: Adding missing tests or correcting existing tests
When you're sending a pull request:
- Prefer small pull requests focused on one change.
- Verify that
flow,eslintand all tests are passing. - Preview the documentation to make sure it looks good.
- Follow the pull request template when opening a pull request.
You can report issues on our bug tracker. Please follow the issue template when opening an issue.
By contributing to React Native CLI, you agree that your contributions will be licensed under its MIT license.