# Azion CLI init, build, and deploy commands

:::note 
In case one or more required fields aren't informed through the specific flags, an interactive message prompts and asks for the missing information.
:::

See the commands that enable the initialization, build, and deployment of applications on the Azion Web Platform.

---

## Initialize

The `init` command offers an interactive journey. Through this command, it's possible to:

- Initialize 
- Build
- Have a local server running
- Deploy applications

:::note 
When you run `azion`, it works as an alias to the `init` command. Then, the same journey is expected.
:::

The initialization process creates the necessary environment for building your application.

### Usage

```sh
azion init
```

Once you've run the `init` command, you should either accept the suggested name to your application or enter a different one:

```sh 
(Hit enter to accept the suggested name in parenthesis) Your applications name:  (resilient_zeus) 
```

Output: 

```sh 
Getting templates available
```

Then, select a template: 

```sh
  Choose a template for your project: (Use arrow keys)
❯ Angular 
  Astro 
  Hexo 
  Next 
  React 
  Vue 
  Vite 
```

Now, the application will be initialized. Different processes occur based on the selected template, so you need to answer the interactions that are presented.

Choose if you want to run the application locally or not:

```sh
? Do you want to start a local development server? (y/N) 
```

:::note 
If you want to start a local development server later, run 'azion dev'
:::

```sh
? Do you want to deploy your project? No
```

:::note 
If you want to deploy your application later, run 'azion deploy'
:::

It's necessary to be *inside the project's folder* to run the `dev`, `build`, and `deploy` commands.


### Optional flags

#### name

The `--name` option can be specified, but it isn't mandatory. If it isn't informed, the name of your project will be autogenerated.

#### help

The `--help` option displays more information about the `build` command.

:::note 
The init command disposes of an interactive journey. It'll ask if you want to initialize a local development server and deploy the project.
:::

---

## Build

```bash
azion build
```

### Optional flags

#### help

The `--help` option displays more information about the `build` command.

#### mode

The `--mode` option can be specified in case the mode needs changing during the build process, but it isn't mandatory. The expected values are `deliver` and `compute`.

#### preset

The `--preset` option can be specified in case the preset needs changing during the build process, but it isn't mandatory. The expected values are:

- Html
- Javascript
- Typescript
- Angular
- Astro
- Hexo
- Next 
- React
- Vue
- static

---

## Deploy 

The `deploy` command deploys your application to the Azion Web Platform.

### Usage

```bash
azion deploy
```

### Optional flags

#### path 

The `--path` option is used when it's necessary to inform the filepath to the static application being deployed.

#### help

The `--help` option displays more information about the `deploy` command.

---

## Inherited flags
Some global options are inherited by the init, build, and deploy commands. Check them out:

```sh
-c, --config string      Sets the Azion configuration folder for the current command only, without changing persistent settings.
-d, --debug              Displays log at a debug level
-l, --log-level string   Displays log at a debug level (default "info")
-s, --silent             Silences log completely; mostly used for automation purposes
-t, --token string       Saves a given personal token locally to authorize CLI commands
-y, --yes                Answers all yes/no interactions automatically with yes
```