# 构建结账扩展

> 用 Shoplazza CLI 端到端构建 Checkout 扩展：创建项目、实时重载开发、构建、推送版本、激活并预览。

本教程端到端构建一个结账扩展——脚手架、开发、推送版本、再激活。`checkout` 是 `checkout-extension` 的别名。

## 前置条件

* 已安装 Shoplazza CLI——见[安装](../install)
* 已认证——见[认证](../authentication)
* `PATH` 中有 Node.js 14.18.0 或更高版本(`dev`、`build`、`push` 通过 Node 运行内置的 Vite 工具链;首次运行会安装项目的 npm 依赖)

## 1. 脚手架项目

`init` 创建一个项目目录并带上第一个扩展(本地,无网络):

```shell
shoplazza checkout init --name my-project --extension my-ext
cd my-project
```

之后要加扩展,在项目内运行 `shoplazza checkout create --name another-ext`。

## 2. 带热更新开发

启动开发服务器(重建 + HMR,端口 8888):

```shell
shoplazza checkout dev --extension-name my-ext
```

用 `--extension-name ext1,ext2` 同时开发多个,或用 `--all` 开发全部。

## 3. 构建

```shell
shoplazza checkout build --name my-ext
```

## 4. 推送版本

`push` 会构建并上传新版本,但**不激活**:

```shell
shoplazza checkout push --name my-ext
```

也可显式指定版本(必须大于上次推送的版本):

```shell
shoplazza checkout push --name my-ext --version 1.1
```

## 5. 激活

先找到服务端扩展 id 及其版本:

```shell
shoplazza checkout list --all
shoplazza checkout versions --extension-id abc123
```

再用 `deploy` 激活该版本:

```shell
shoplazza checkout deploy --extension-id abc123 --version 1.1
```

在终端中也可以省略 `--extension-id` 和 `--version`,从列表中选择扩展及其版本。该版本替换线上结账扩展前,`deploy` 会请你确认。

:::tip
给 `deploy`、`undeploy`、`preview`、`versions` 加 `--dry-run`,可只打印请求而不发送。
:::

## 6. 预览

为某个版本生成可分享的预览 URL:

```shell
shoplazza checkout preview --extension-id abc123 --version 1.1
```

## 下一步

* [checkout-extension 命令参考](../commands/checkout-extension)
* [构建并发布主题](./build-and-publish-a-theme)
