# CLI Commands

The Frontity command-line tool (CLI) is the main entry point for getting up and running with a Frontity application. It provides functionality like running a development server or building your Frontity application for deployment.

## How to use Frontity CLI

The Frontity CLI (Frontity commands) is available via [npm](https://www.npmjs.com/package/frontity). You can run any Frontity command by doing `npx frontity <frontity-command>`

Run `npx frontity --help` for full help.

## Commands

The `frontity` commands you have available are:

### [Create commands](https://api.frontity.org/frontity-cli/create-commands)

These commands allow you to either create a Frontity project or a Frontity package:

* [`create`](https://api.frontity.org/frontity-cli/create-commands/create)
* [`create-package`](https://api.frontity.org/frontity-cli/create-commands/create-package)

### [Run commands](https://api.frontity.org/frontity-cli/run-commands)

These commands allow you to run a Frontity project in development or production mode:

* [`dev`](https://api.frontity.org/frontity-cli/run-commands/dev)
* [`serve`](https://api.frontity.org/frontity-cli/run-commands/serve)

### [Build commands](https://api.frontity.org/frontity-cli/build-commands)

These commands allow you to generate the code that can be used to run or analyze a Frontity project:

* [`build`](https://api.frontity.org/frontity-cli/build-commands/build)

### [Extra commands](https://api.frontity.org/frontity-cli/extra-commands)

* [`subscribe`](https://api.frontity.org/extra-commands#subscribe)
* [`info`](https://api.frontity.org/extra-commands#info)

{% hint style="info" %}
You can also use `--help` with each of these commands to get more information about them: `npx frontity dev --help`
{% endhint %}

{% hint style="info" %}
Have a look at [this video](https://www.youtube.com/watch?v=3d7b-cy5cFY) to learn more about what Frontity does internally when these commands are executed.
{% endhint %}

## Arguments & Environment Variables

The Frontity CLI allows parametrization via arguments or environment variables to customize their execution.

If some of these arguments or environment variables are detected the proper values will be set and applied in the execution of the command.

![](https://frontity.org/wp-content/uploads/2021/04/cli-environment-variables.png)

### `--no-prompt`

There's a **`--no-prompt`** option that can be used along with environment variables to avoid any questions from the CLI.

**Example**

If you pass the `--no-prompt` flag to the [`create`](https://api.frontity.org/frontity-cli/create-commands/create) or [`create-package`](https://api.frontity.org/frontity-cli/create-commands/create-package), the CLI will use the name from either [`FRONTITY_CREATE_NAME`](https://api.frontity.org/create-commands/create#frontity_create_name) or [`FRONTITY_CREATE_PACKAGE_NAME`](https://api.frontity.org/create-commands/create-package#frontity_create_package_name) environment variables.

If the CLI cannot find any of these environmental variables, it will prompt for the name of the package.

This is the scheme followed by the CLI to get the name of the package:

![](https://frontity.org/wp-content/uploads/2021/04/no-prompt.png)

## A typical workflow with Frontity commands

### In development

1. Create a Frontity project: `npx frontity create my-cool-project`
2. Add a custom theme (package): `npx frontity create-package my-custom-theme`
3. Launch a development server: `npx frontity dev`

### In production

1. Generate a build of the project: `npx frontity build`
2. Launch the project in production using the build generated before: `npx frontity serve`
