Files
Alex Hunt cec7c453fb Move codegen and spm command wrappers into community-cli-plugin (#57652)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57652

Migrate the `codegen` and `spm` command wrappers (Community CLI specific) out of `react-native.config.js` and into the `react-native/community-cli-plugin` package, alongside the existing `bundleCommand` and `startCommand`.

This continues moving command definitions into the plugin so `react-native.config.js` becomes a thin routing layer, as the file's own comment already calls for.

**Changes**

- Add `src/commands/spm/index.js` and `src/commands/codegen/index.js`, each defining and default-exporting its command (unchanged `name`, `description`, and `options`) plus an exported args type — mirroring the `bundle`/`start` command structure.
- Export `spmCommand` and `codegenCommand` from `src/index.flow.js`.
- Drop the inline `spmCommand` and `codegenCommand` definitions from `react-native.config.js`.
- Add docs to README.

Changelog: [Internal]

Reviewed By: robhogan

Differential Revision: D113412987

fbshipit-source-id: a39a7ef208ee970f2b7f9d4c38a86c39752db09a
2026-07-25 10:32:46 -07:00

5.9 KiB

@react-native/community-cli-plugin

npm npm downloads

This is an internal dependency of React Native. Please don't depend on it directly.

CLI entry points supporting core React Native development features.

Formerly @react-native-community/cli-plugin-metro.

Commands

start

Start the React Native development server.

Usage

npx @react-native-community/cli start [options]

Options

Option Description
--port <number> Set the server port.
--host <string> Set the server host.
--projectRoot <path> Set the path to the project root.
--watchFolders <list> Specify additional folders to be added to the watch list.
--assetPlugins <list> Specify additional asset plugins.
--sourceExts <list> Specify additional source extensions to bundle.
--max-workers <number> Set the maximum number of workers the worker-pool will spawn for transforming files. Defaults to the number of the cores available on your machine.
--transformer <string> Specify a custom transformer.
--reset-cache Remove cached files.
--custom-log-reporter-path <string> Specify a module path exporting a replacement for TerminalReporter.
--https Enable HTTPS connections.
--key <path> Specify path to a custom SSL key.
--cert <path> Specify path to a custom SSL cert.
--config <string> Path to the CLI configuration file.
--no-interactive Disable interactive mode.
--client-logs [Deprecated] Enable plain text JavaScript log streaming for all connected apps.

bundle

Build the bundle for the provided JavaScript entry file.

Usage

npx @react-native-community/cli bundle --entry-file <path> [options]

Options

Option Description
--entry-file <path> Set the path to the root JavaScript entry file.
--platform <string> Set the target platform (either "android" or "ios"). Defaults to "ios".
--transformer <string> Specify a custom transformer.
--dev [boolean] If false, warnings are disabled and the bundle is minified. Defaults to true.
--minify [boolean] Allows overriding whether bundle is minified. Defaults to false if --dev is set. Disabling minification can be useful for speeding up production builds for testing purposes.
--bundle-output <string> Specify the path to store the resulting bundle.
--bundle-encoding <string> Specify the encoding for writing the bundle (https://nodejs.org/api/buffer.html#buffer_buffer).
--resolver-option <string...> Custom resolver options of the form key=value. URL-encoded. May be specified multiple times.
--sourcemap-output <string> Specify the path to store the source map file for the resulting bundle.
--sourcemap-sources-root <string> Set the root path for source map entries.
--sourcemap-use-absolute-path Report SourceMapURL using its full path.
--max-workers <number> Set the maximum number of workers the worker-pool will spawn for transforming files. Defaults to the number of the cores available on your machine.
--assets-dest <string> Specify the directory path for storing assets referenced in the bundle.
--reset-cache Remove cached files.
--read-global-cache Attempt to fetch transformed JS code from the global cache, if configured. Defaults to false.
--config <string> Path to the CLI configuration file.

codegen

Run the React Native codegen, generating native boilerplate from JS spec files.

Usage

npx @react-native-community/cli codegen [options]

Options

Option Description
--path <path> Path to the React Native project root. Defaults to the current working directory.
--platform <string> Target platform. Supported values: "android", "ios", "all". Defaults to "all".
--outputPath <path> Path where generated artifacts will be output to.
--source <string> Whether the script is invoked from an app or a library. Defaults to "app".

spm [action]

Set up or maintain Swift Package Manager support for the iOS/macOS app. Actions: add, update, deinit, scaffold. With no action: add (or update if SPM is already set up).

Usage

npx @react-native-community/cli spm [action] [options]

Options

Option Description
--version <string> React Native version (e.g. 0.80.0). Defaults to the version in node_modules/react-native/package.json.
--yes Skip the dirty-pbxproj confirmation prompt.
--xcodeproj <path> [add] Path to the .xcodeproj to inject SPM packages into (disambiguates when several exist).
--productName <string> [add] App target to inject into (disambiguates when several exist).
--deintegrate [add] Run pod deintegrate and strip React Native from the Podfile before injecting (CocoaPods → SwiftPM migration).
--artifacts <path> [advanced] Local artifact root containing complete debug/ and release/ slots.
--download <string> [advanced] Artifact download policy: auto (default), skip, or force.
--skipCodegen [advanced] Skip the react-native codegen step.

Contributing

Changes to this package can be made locally and tested against the rn-tester app, per the Contributing guide. During development, this package is automatically run from source with no build step.