# 构建你的第一个应用

> 约 15 分钟用 Shoplazza CLI 走完应用的完整生命周期：认证、创建脚手架、添加扩展、本地开发、部署并查看版本。

本教程用 Shoplazza CLI 走一遍完整的应用生命周期——从空目录到部署好、带扩展的应用,约 15 分钟。

## 前置条件

* 已安装 Shoplazza CLI——见[安装](../install)
* 一个 Shoplazza 合作伙伴账号
* `PATH` 中有 `git`(`app init` 和 `app extension create` 用它克隆模板)

## 1. 认证

`--domain app` 会授予应用扩展开发所需的权限:

```shell
shoplazza auth login --store-domain my-store.myshoplaza.com --domain app
```

验证:

```shell
shoplazza auth status
```

## 2. 脚手架应用

`app init` 创建一个新应用,并将其项目脚手架到子目录中:

```shell
shoplazza app init --name "my-app"
```

若你的账号属于多个 partner,加上 `--partner <id>`。若要关联已有应用,改用 `shoplazza app init --client-id <client_id>`。若该 partner 下已有名为 `my-app` 的应用,`app init` 会停下并给出它的 `client_id`,而不会重复创建。在终端中也可以不带参数运行 `shoplazza app init`,按提示作答。

```shell
cd my-app
```

## 3. 添加扩展

将一个主题扩展脚手架到项目中:

```shell
shoplazza app extension create --type theme --name my-theme --theme-type basic
```

`--type` 接受 `theme`、`checkout` 或 `function`。函数扩展:`--type function --name my-function`。

## 4. 本地开发

构建所有扩展并推送到店铺,同时启动带公网隧道的开发服务器:

```shell
shoplazza app dev
```

应用来自当前激活的应用配置,店铺为你的当前店铺。刷新店铺即可看到扩展的改动。没有文件监听——改完文件后需重新运行 `app dev`。用 `--debug` 输出详细构建日志。

要在合作伙伴后台登记隧道 URL,运行 `shoplazza app dev --write-urls`(会把它们记录到应用配置的 `[dashboard]` 段),再运行 `shoplazza app config push`。

## 5. 部署

构建所有扩展,并把应用的新版本部署到你的当前店铺(在终端中会先请你确认):

```shell
shoplazza app deploy
```

## 6. 查看已部署版本

```shell
shoplazza app versions
```

## 下一步

* [构建结账扩展](./build-a-checkout-extension)
* [app 命令参考](../commands/app) —— 每个 flag 与子命令
* [配置文件](../guides/configuration) —— `shoplazza.app.toml` 与多配置工作流
