# Checkout 扩展

> Shoplazza CLI 的 checkout-extension 命令：在终端完成 Checkout 扩展的脚手架、开发、构建、推送、部署与预览。

构建、开发和管理 Shoplazza Checkout 扩展。别名：`checkout`。

## init

创建新的 Checkout 扩展项目脚手架（本地操作，无需网络）。

```shell
shoplazza checkout-extension init --name <项目名> --extension <首个扩展名>
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--name` | string | 项目名称（在当前目录下创建同名目录） |
| `--extension` | string | 首个扩展名称 |

### 示例

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

## create

在已有项目中创建新扩展（本地操作，无需网络）。需在 `init` 创建的项目目录内执行。

```shell
shoplazza checkout-extension create --name <扩展名>
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--name` | string | 扩展名称 |

### 示例

```shell
shoplazza checkout create --name another-ext
```

## dev

启动 Checkout 扩展开发服务器（自动重新构建 + 端口 8888 上的 HMR 热更新）。

```shell
shoplazza checkout-extension dev [flags]
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--extension-name` | stringSlice | 要开发的扩展名称（可重复使用，支持逗号分隔） |
| `--all` | bool | 开发 ./extensions 下的所有扩展 |

### 示例

```shell
# 开发单个扩展
shoplazza checkout dev --extension-name my-ext

# 开发多个扩展
shoplazza checkout dev --extension-name ext1,ext2

# 开发所有扩展
shoplazza checkout dev --all
```

## build

使用内置 Vite 工具链构建 Checkout 扩展。

```shell
shoplazza checkout-extension build [flags]
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--name` | string | 扩展名称（./extensions 下的目录名）；在扩展目录内运行时可省略 |
| `--debug` | bool | 将详细构建日志输出到 stderr |

### 示例

```shell
# 从项目根目录构建
shoplazza checkout build --name my-ext

# 在扩展目录内构建
cd extensions/my-ext && shoplazza checkout build
```

## push

构建并上传新的扩展版本（不会自动激活）。上传后需使用 `deploy` 命令激活。

```shell
shoplazza checkout-extension push --name <扩展名> [flags]
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--name` | string | 扩展名称（./extensions 下的目录名）——**必填** |
| `--version` | string | 可选。推送前将此版本号写入 extension.json（必须大于上次推送的版本号） |
| `--debug` | bool | 将详细构建日志输出到 stderr |

### 示例

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

## deploy

激活一个已推送的扩展版本。

```shell
shoplazza checkout-extension deploy --extension-id <id> --version <版本号>
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--extension-id` | string | 服务端扩展 ID |
| `--version` | string | 要激活的版本号，如 1.0（通过 `checkout versions` 解析为服务端 ID） |
| `--dry-run` | bool | 仅打印将要发送的请求，不实际执行 |

### 示例

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

## undeploy

取消部署扩展（扩展级别操作，无需确认）。

```shell
shoplazza checkout-extension undeploy --extension-id <id>
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--extension-id` | string | 服务端扩展 ID——**必填** |
| `--dry-run` | bool | 仅打印将要发送的请求，不实际执行 |

### 示例

```shell
shoplazza checkout undeploy --extension-id abc123
```

## list

列出 Checkout 扩展。默认仅显示已发布的扩展。

```shell
shoplazza checkout-extension list [flags]
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--all`, `-a` | bool | 列出所有扩展（不仅限于已发布的） |
| `--dry-run` | bool | 仅打印将要发送的请求，不实际执行 |

### 示例

```shell
shoplazza checkout list
shoplazza checkout list --all
```

## versions

列出 Checkout 扩展的版本。

```shell
shoplazza checkout-extension versions --extension-id <id>
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--extension-id` | string | 服务端扩展 ID（可通过 `checkout list` 获取）——**必填** |
| `--dry-run` | bool | 仅打印将要发送的请求，不实际执行 |

### 示例

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

## preview

为扩展版本生成预览 URL。

```shell
shoplazza checkout-extension preview --extension-id <id> --version <版本号>
```

### Flags

| Flag | 类型 | 说明 |
|------|------|------|
| `--extension-id` | string | 服务端扩展 ID |
| `--version` | string | 要预览的版本号，如 1.0（通过 `checkout versions` 解析为服务端 ID） |
| `--dry-run` | bool | 仅打印将要发送的请求，不实际执行 |

### 示例

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