跳到主要内容

arc deploy

arc deploy 注册或发布一个 blocklet:本地跟 daemon 注册用于开发,或者发布到 DID Space(本地或远程)用于真正的分发。

arc deploy 部署和管理 blocklet,包括本地 daemon 注册(给开发用)和 DID Space 发布(给真正的分发用)。这和 arc blocklet deploy 不是一回事,后者是推到 Cloudflare Pages,arc deploy 管的是本地 daemon 和 DID Space。

bash
arc deploy <path> [options]

全局选项(见 总览):--json、--view、--instance / -i(作用在哪个本地 ARC 实例;省略即 default),以及 --home(实例根;要指定作用在哪个实例,用 --instance)。

  • path:本地 blocklet 目录路径、git+https://… URL,或者 https://…/archive.tar.gz URL——后两种(远程来源)还额外要求带 --publish,否则会直接报错退出:Remote sources (git+url / http-url) require --publish.

选项

  • --publish:把 blocklet 代码发布到本地开发者 DID Space,而不是注册到本地 daemon(零网络/零鉴权);只有本地发布的内容才能被 arc deploy show/list --published 看到
  • --server <url>:发布到远程 DID Space 服务器,而不是本地的,隐含 --publish;总是需要鉴权(浏览器流程、缓存的凭证,或者 --token),即便目标是本地回环地址
  • --token <token>:--server 用的 bearer token,不给的话走交互式浏览器授权。已声明并强制生效:只给 --token 不给 --server 会直接报错,不会静默忽略这个 token——两个一起传就能过这道检查,往下走真正的逻辑——这里报错只是因为这个路径不存在,证明这道检查是真的在辨别,不是逢输入就拒:
  • --browser:发布到 --server 时为授权流程打开浏览器(默认 true);配合 --token 传 --no-browser 可用于无人值守场景
  • --prerender:发布前先把网页预渲染进 .web-cache/,和 arc blocklet build 的 ARC_PRERENDER 是一回事;默认开启,传 --no-prerender 或者设 ARC_PRERENDER=0 关闭
  • --dry-run:只打印部署计划,不注册、不发布、不抓取

arc deploy <path> 单独用时只注册并服务这个 blocklet 给当前 daemon session——不会在重启后存活。arc deploy 本身没有 --persist 选项了;要让一个 blocklet 来源在 arc service restart 之后还在,改成记录到实例上:

bash
arc service start --blocklet /path/to/my-blocklet   # 或者:arc service restart --blocklet /path/to/my-blocklet

示例(来自 arc deploy --help)

bash
arc deploy /path/to/my-blocklet                          # 注册并让本地服务这个 blocklet(实例在跑就热加载)
arc deploy /path/to/my-blocklet --dry-run                # 预览一次部署,不实际写入
arc service start --blocklet /path/to/my-blocklet        # 把来源记到实例上,重启也不丢
arc deploy /path/to/my-blocklet --publish                # 把 blocklet 代码发布到开发者 DID Space
arc deploy list                                          # 列出 default 实例已注册的 blocklet 来源
arc deploy list -i alice                                 # 只列出实例 alice 已注册的来源
arc deploy list --home /path/to/instance                 # 列出注册在该 home 的实例的来源
arc deploy list --published                              # 列出已发布到 DID Space 的 blocklet
arc deploy show did:blocklet:z2x                         # 读取发布到 DID Space 的文件
arc deploy remove /path/to/my-blocklet                   # 从实例记录里丢掉一个来源;重启后生效

arc deploy list

列出全部额外注册的 blocklet 来源,或者已发布到 DID Space 的 blocklet。

用法

bash
arc deploy list [options]
  • --published:列出已发布到 DID Space 的 blocklet(blocklet-sources.json),而不是已注册的来源

示例

bash
$ arc deploy list
Registered blocklet sources (via instance default):
No extra blocklet sources registered.
Tip: arc service start --blocklet <path>

arc deploy remove

从实例记录里去掉一个已注册的额外 blocklet 来源(arc#6061);不是热拔——要重启才生效。

用法

bash
arc deploy remove <target> [options]
  • target(必填):要去掉的 blocklet 目录,或者它的额外来源父目录

示例(accept path:target 确实已注册)

bash
$ arc deploy remove /path/to/my-blocklet
Unregistered /path/to/my-blocklet from instance default.
Restart with `arc service restart` to apply.

没有任何东西可去掉是 reject path,exit 1:

bash
$ arc deploy remove /path/to/my-blocklet
ERROR: Error: "/path/to/my-blocklet" is not a registered extra source on instance default.
Registered: (none)

arc deploy show

读取某个 blocklet 发布到开发者 DID Space 的文件。

用法

bash
arc deploy show <did> [subpath] [options]
  • did(必填):要查看的 blocklet DID,或者裸 id
  • subpath:发布目录树内的可选路径