Command line tools that ship with react-native
in form of the @react-native-community/cli
package.
It exposes
react-native
binary, so you can callyarn react-native
ornpx react-native
directly from your project.
Note: CLI has been extracted from core react-native
as a part of "Lean Core" effort. Please read this blog post for more details.
- Compatibility
- Documentation
- About
- Creating a new React Native project
- Usage in an existing React Native project
- Updating the CLI
- Contributing
- Maintainers
- License
Our release cycle is independent of react-native
. We follow semver and here is the compatibility table:
@react-native-community/cli |
react-native |
---|---|
^5.0.0 (next ) |
master |
^4.0.0 (master ) |
^0.62.0 |
^3.0.0 | ^0.61.0 |
^2.0.0 | ^0.60.0 |
^1.0.0 | ^0.59.0 |
This repository contains tools and helpers for React Native projects in form of a command line tool. There's been quite some confusion around that since the extraction from React Native core. Let's clear them up:
- There are currently two CLIs:
@react-native-community/cli
– the one used directly byreact-native
. That makes it a transitive dependency of your project.react-native-cli
– an optional global convenience package, which is a proxy to@react-native-community/cli
and global installation helper. Please consider it legacy, because it's not necessary anymore.
- When we say "the CLI" we mean
@react-native-community/cli
. - We update the CLI independently of React Native itself. Please see how to use the latest version.
- This is a monorepo to keep stuff organized.
We're actively working to make any indirections gone.
There are two ways to start a React Native project.
Available since
[email protected]
This method is preferred if you don't want to install global packages.
npx react-native init MyApp
Once you're inside an existing project, a local react-native
binary will be available for you to use. Feel free to use Yarn to call it directly.
Example running start
command in terminal:
yarn react-native start
# or:
npx react-native start
# or
node ./node_modules/.bin/react-native start
You can also add npm scripts to call it with whichever package manager you use:
{
"scripts": {
"start": "react-native start"
}
}
React Native CLI is a dependency of react-native
, which makes it a transitive dependency of your project. It happens that you may be locked on a version without fixes for bugs that may affect you. Here's how to get it sorted:
-
If you use lock files (
yarn.lock
orpackage-lock.json
) - find all the@react-native-community/cli
prefixed entries, remove them, runyarn install
/npm install
once again. Here's an example usingyarn.lock
. Notice how whole@react-native-community/cli
entries are removed. Make sure to delete all of them:diff --git a/yarn.lock b/yarn.lock index 073309f..0bb8c4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -843,26 +843,6 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@react-native-community/cli-debugger-ui@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz#d01d08d1e5ddc1633d82c7d84d48fff07bd39416" - integrity sha512-m3X+iWLsK/H7/b7PpbNO33eQayR/+M26la4ZbYe1KRke5Umg4PIWsvg21O8Tw4uJcY8LA5hsP+rBi/syBkBf0g== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-platform-android@^3.0.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-3.1.2.tgz#313644fba81b5d673cc803009e1eddc930b9618c" - integrity sha512-H30a00LLigsTh4eO0kc2YtaIkOJKrValWOU6n2VES3ZGS31qDx9GhZIwMCMcdzcSnypAyMAfauVatEmBSQZU7Q== - dependencies: - "@react-native-community/cli-tools" "^3.0.0" - chalk "^2.4.2"
-
If you don't use lock files – remove
node_modules
and runyarn install
/npm install
again. -
Run
yarn list --pattern @react-native-community/cli
ornpm list @react-native-community/cli
and verify you're on the latest version.
After performing these steps you should be on the latest CLI version. Feel free to do it once in a while, because we release often.
- Michał Pierzchała (@thymikee) - Callstack
- Mike Grabowski (@grabbou) - Callstack
- Kacper Wiszczuk (@esemesek) - Callstack
Everything inside this repository is MIT licensed.