# start

## Description

* Create a composite bundle out of multiple MiniApps and start the react-native local packager to serve this bundle so that it can be loaded within the native host application

## Syntax

`ern start`

**Note**

If you do not pass an argument to this command, you are prompted to select a native application version from the Cauldron. The command uses whatever MiniApp versions are currently declared in this native application version container to launch the command.

**Options**

`--baseComposite <compositePath>`

* Git or File System path, to the custom Composite repository (refer to the [custom Composite](https://github.com/electrode-io/electrode-native/tree/ca91ff94ebe1206ee7deb9061a19a85f174ef43b/docs/cli/platform-parts/composite/index.md) documentation for more information).

`--compositeDir <compositeDir>`

* Directory in which to generate the composite
* The directory should either not exist (will be created) or be empty
* By default the composite will be generated in a temporary directory

`--descriptor/-d <descriptor>`

* Target a specific native application version, associated to the provided *complete native application descriptor*.
* This option uses whatever MiniApp versions are currently declared in this native application version container to launch the command.

`--miniapps/-m <miniapps>`

* Specify one or more MiniApps to launch this command
* The command packages all the provided MiniApps in a composite bundle and starts the react-native packager.
* You can use any valid Yarn package descriptor for the MiniApps provided to this command, including Git and other file system path schemes.

`--jsApiImpls`

* Specify one or more JS API Implementations to include

`--watchNodeModules/-w <nodemodules>`

* A list of one or more directory name(s) from node\_modules that should be watched for changes.

`--extraJsDependencies/-e <jsdependencies>`

* Additional JavaScript dependencies to add to the composite JavaScript bundle.

`--host`

* Host or ip to launch the local packager on *(default: localhost)*

`--port`

* Port on which the local packager should listen on *(default: 8081)*

`--resetCache`\\

* Indicates whether to reset the React Native cache prior to bundling

**Platform Specific Options**

`Android`

`--activityName/-a <activity name>`

* Specify Android Activity to launch.

`--launchFlags <string>`

* Extra options passed to `am start` command when launching the application (correspond to the `Launch Flags` in Run/Debug Configurations of application in Android Studio, as can be seen on screenshot below)
* Make sure to use `=` on the command line to provide this option, and keep the string in quotes. For example `--launchFlags="--es aKey aStringValue --ei anotherKey 1"`

![Android Studio Run Config](https://3739191582-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LF_waG_U-NeI1vhIUwJ%2F-LqnIijeK72sOcRgCDmf%2F-LqnImInlEjOrl_iLAY9%2Fandroid-studio-run-config.png?generation=1570671374625335\&alt=media)

`--packageName/-p <packagename>`

* Android application package name to avoid conflict with the names of classes or interfaces.

`iOS`

`--bundleId/-b`

* iOS Bundle Identifier unique to your app.

`--launchArgs`

* Arguments to pass to the application when launching it (correspond to the `Arguments Passed On Launch` in application scheme run config in Xcode as can be seen on screenshot below).
* Make sure to use `=` on the command line to provide this option, and keep the string in quotes. For example `--launchArgs="-ArgA -ArgB"`

`--launchEnvVars`

* Environment variables to pass to the application when launching it (correspond to the `Environment Variables` in application scheme run config in Xcode as can be seen on screenshot below).
* Make sure to use `=` on the command line to provide this option, and keep the string in quotes. The string should contain `key=value` pairs delimited by spaces. For example `--launchEnvVars="aKey=aValue anotherKey=anotherValue"`
* **Default** false

![xcode scheme run](https://3739191582-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LF_waG_U-NeI1vhIUwJ%2F-LqnIijeK72sOcRgCDmf%2F-LqnImIp5JVofvzLQKC5%2Fxcode-scheme-run.png?generation=1570671373653853\&alt=media)

**Binary Store Specific Options**

`--disableBinaryStore`

* Setting this option will bypass retrieval and installation of the binary from the Binary Store.
* It can be useful in case you want to use `ern start` command in conjunction with your own mobile application native binary, build locally on your workstation or retrieved from a specific location.

`--flavor`

* Flavor of the binary to retrieve from the store.
* The binary of a specific application version (for ex `1.0.0`) can have different flavors, representing different build types of the same application version (for example `Dev`/`Prod`/`QA` ...).

## Remarks

* This command can be used to package multiple MiniApps inside a single composite bundle and automatically start the react-native local packager to serve this bundle.
* Use this command when you need to launch and develop or debug your MiniApps from within a native host application which contains other MiniApps along with your MiniApp.
* This command works with the `ern link` command. For additional information, see the documentation for the `ern link` command.
* When using a binary store, file watcher will be started after the binary is retrieved and installed on the simulator/device. If you are using a binary store and don't want to launch binary from the store, please make sure to use the `--disableBinaryStore` option. Otherwise, file watcher will not be started.

## Related commands

[ern link](https://native.electrode.io/v0.47/cli-commands/link) | Link to a MiniApp directory
