应用开发
管理应用的完整开发生命周期——初始化、开发、部署和版本管理。
init
创建新的 Shoplazza 应用项目或连接到已有应用。命令会在当前目录下创建一个以应用命名的子目录。
两种互斥模式:
- 创建模式(
--name):创建新应用并搭建项目。 - 链接模式(
--client-id):通过 Client ID 链接已有应用并搭建项目。
必须提供 --name 或 --client-id 其中之一。
shell
shoplazza app init --name "My App" [--partner <id>]
shoplazza app init --client-id <client_id>
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--name <名称> | string | 创建模式:新应用的名称,与 --client-id 互斥 |
--partner <id> | string | 创建模式:创建应用所属的合作伙伴(组织)ID;仅在账户有多个合作伙伴时需要(链接模式下忽略) |
--client-id <id> | string | 链接模式:通过 Client ID 链接已有应用,与 --name 互斥 |
示例
shell
# 创建新应用(单合作伙伴账户)
shoplazza app init --name "my-app"
# 在指定合作伙伴下创建新应用
shoplazza app init --name "my-app" --partner partner-id
# 链接到已有应用
shoplazza app init --client-id your-client-id
list
列出账户下的所有应用。
shell
shoplazza app list [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--partner <id> | string | 按合作伙伴 ID 筛选(账户有多个合作伙伴时需要) |
info
显示当前应用的元数据,包括合作伙伴、用户和本地扩展信息。
shell
shoplazza app info [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--path <路径> | string | 项目根目录(默认:.;使用 --client-id 时忽略) |
--client-id <id> | string | 通过 Client ID 查询指定应用(跳过本地项目;不列出扩展) |
dev
启动本地开发服务器,支持所有扩展的热模块替换。
shell
shoplazza app dev [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--path <路径> | string | 项目根目录(默认:.) |
--debug | bool | 以调试模式构建扩展(默认:false) |
--ngrok-authtoken <token> | string | 个人 ngrok 认证令牌。保存到 <项目>/.env 的 NGROK_AUTHTOKEN 字段,后续运行会自动复用。仅在主隧道 cloudflared 无法启动时作为备选方案使用 |
deploy
构建并部署应用及其所有扩展到生产环境。
shell
shoplazza app deploy [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--path <路径> | string | 项目根目录(默认:.) |
--debug | bool | 以调试模式构建扩展(默认:false) |
示例
shell
# 从当前目录部署
shoplazza app deploy
# 部署指定项目
shoplazza app deploy --path ./my-app
config link
将应用配置文件写入当前项目。与 app init 不同,不会搭建模板——仅添加 shoplazza.app.<name>.toml。
两种互斥模式:
- 链接模式(
--client-id):从 Dashboard 拉取已有应用的配置。 - 创建模式(
--create --name):在后端创建新应用,然后写入配置。
shell
shoplazza app config link --client-id <client_id>
shoplazza app config link --create --name "My App" [--partner <id>]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--client-id <id> | string | 链接模式:通过 Client ID 拉取已有应用的配置,与 --create 互斥 |
--create | bool | 创建模式:在后端创建新应用并写入配置,与 --client-id 互斥 |
--name <名称> | string | 创建模式:新应用的名称(使用 --create 时必填) |
--partner <id> | string | 创建模式:创建应用所属的合作伙伴(组织);仅有一个合作伙伴时自动选择 |
--config <名称> | string | 应用配置名称(默认:应用名称)——写入 shoplazza.app.<名称>.toml,已存在则合并 |
--path <路径> | string | 项目根目录(默认:.) |
config use
切换当前活跃的应用配置(在线验证)。
shell
shoplazza app config use [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--config <名称> | string | 要切换到的应用配置名称(默认:基础 shoplazza.app.toml) |
--path <路径> | string | 项目根目录(默认:.) |
extension create
在当前应用项目中搭建新的扩展。
shell
shoplazza app extension create [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--type <类型> | string | 扩展类型:theme、checkout 或 function(必填) |
--name <名称> | string | 扩展名称 / extensions/ 下的目标目录(必填) |
--theme-type <子类型> | string | 主题子类型:basic 或 embed(--type 为 theme 时必填) |
--path <路径> | string | 项目根目录(默认:.) |
示例
shell
# 创建主题扩展
shoplazza app extension create --type theme --name my-theme --theme-type basic
# 创建函数扩展
shoplazza app extension create --type function --name my-function
versions
列出应用的所有已部署版本(分页)。
shell
shoplazza app versions [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--client-id <id> | string | 应用 Client ID(默认:当前活跃配置) |
--partner <id> | string | 合作伙伴 ID(默认:当前活跃配置) |
--path <路径> | string | 项目根目录(默认:.) |
--offset <数量> | int | 分页偏移量(默认:0) |
--limit <数量> | int | 分页限制(默认:20) |
function compile
将单个函数扩展的 src/index.js 通过 javy 工具链编译为 WASM。
shell
shoplazza app function compile [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--name <名称> | string | extensions/ 下的函数扩展名称(必填) |
--path <路径> | string | 项目根目录(默认:.) |
function release
编译并发布单个函数扩展。如需发布整个应用,请使用 shoplazza app deploy。
shell
shoplazza app function release [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--name <名称> | string | extensions/ 下的函数扩展名称(必填) |
--client-id <id> | string | 应用 Client ID(默认:当前活跃配置) |
--path <路径> | string | 项目根目录(默认:.) |
--debug | bool | 预留的调试模式标志(默认:false) |
function list
列出当前应用的函数扩展。
shell
shoplazza app function list [参数]
参数
| 参数 | 类型 | 说明 |
|---|---|---|
--path <路径> | string | 项目根目录(默认:.) |
配置文件
shoplazza.app.toml
应用主配置文件:
toml
# 应用 Client ID(必填)
client_id = "your-client-id"
# 应用权限作用域
scopes = "read_customer write_cart_transform"
shoplazza.extension.toml
每个扩展有独立的配置文件:
toml
# 扩展 ID(系统生成)
id = "extension-id"
# 扩展名称
name = "My Extension"
# 扩展类型(theme / checkout / function)
type = "theme"