# Neutrino CLI Using the command-line interface is the preferred way of interacting with Neutrino. Let's take a look at its usage. ## `--help` Using `neutrino --help` will bring up the following help guide: ```bash ❯ neutrino --help Commands: start Build a project in development mode build Compile the source directory to a bundled build test [files..] Run all suites from the test directory or provided files Options: --presets A list of Neutrino presets used to configure the build [array] [default: []] --version Show version number [boolean] --help Show help [boolean] ``` ## `--version` Using `--version` will output the current version of the Neutrino CLI to the console and exit. ```bash ❯ neutrino --version 4.0.0 ``` ## `--presets` The `--presets` flag can be used in conjunction with any of the top-level commands to specify a collection of presets to load. These can be an npm package or a relative path to a module to load as a preset. ```bash ❯ neutrino start --presets neutrino-preset-react neutrino-preset-karma ``` The Neutrino CLI will still attempt to load any presets defined in the project's package.json located at `config.presets`. Presets passed via the CLI `--presets` will take precedence over presets defined in `config.presets`, meaning that options set by package.json presets can have their values overridden by `--presets` presets. ## neutrino start Using the command `neutrino start` builds a project in development mode, also starting a development server or source watcher depending on the preset or config options used. This command sets the `NODE_ENV` environment variable to `development`. ## neutrino build Using the command `neutrino build` builds a project in production mode, rendering static assets to the configured build output destination. This command sets the `NODE_ENV` environment variable to `production`. ## neutrino test Using the command `neutrino test` passes execution onto a test runner preset. It is up to the preset being used to determine how source files are built or provided to tests. See your particular test preset for details. This command sets the `NODE_ENV` environment variable to `test`. Looking at the `--help` for `neutrino test`: ```bash ❯ neutrino test --help neutrino test [files..] Options: --presets A list of Neutrino presets used to configure the build [array] [default: []] --version Show version number [boolean] --help Show help [boolean] --coverage Collect test coverage information and generate report [boolean] [default: false] --watch Watch source files for changes and re-run tests [boolean] [default: false] ``` Using the command `neutrino test` will execute every test file located in your [testing directory](/project-layout#Testing). You may also provide to this command the specific test files you wish to run individually. It is important to note that when combined with the `--presets` parameter, you should use two dashes after the last preset to denote the end of the presets and the beginning of the test files. ```bash ❯ neutrino test a_test.js b_test.js ``` ```bash ❯ neutrino test --presets neutrino-preset-react neutrino-preset-karma -- a_test.js b_test.js ``` You can also pass a flag `--watch` to watch source files for changes and re-run tests, if your preset supports it. ```bash ❯ neutrino test --watch ``` As well you can pass a flag `--coverage` to collect test coverage information and generate a report, if your preset supports it. ```bash ❯ neutrino test --coverage ``` ## Exit codes When the CLI creates an instance of Neutrino, it waits for all commands to either resolve or reject their Promise. If the command succeeded, the CLI will exit with code `0`. If there was an error, the CLI will log the error to the console and exit with code `1`. This makes it easier to use Neutrino commands for status reasons, such as failing a pull request on continuous integration if any tests fail or if there are linter errors.