跳到主要内容

arc provider

arc provider 处理 provider 包相关的操作,目前是把一个 provider 的 AUP 资源树发布到 Cloudflare Pages,让它能通过 URL 被引用。

arc provider 处理 provider 包本身(实现 AFS provider 的那些 npm 包)相关的操作,跟 arc afs 不一样,后者操作的是一个 provider 挂载之后暴露出来的东西。

bash
arc provider <subcommand> [options]

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

arc provider publish-resources

把一个 provider 包的 aup/ 树发布到 CF Pages,路径是 /_providers/<name>@<version>/。provider 的配套资源(比如 AUP 里引用的 UI 片段)就是靠这个变得能通过 URL 拿到的。

用法

bash
arc provider publish-resources <package> [options]
  • package(必填):npm 包名,比如 @aigne/afs-ocap,或者包目录的路径
  • --cloud <fs|cf|none>:发布目标:fs 写到本地 Pages 目录,cf 推到 Cloudflare Pages,none 只 stage 进 ~/.afs/blocklets-staging 不推送,适合批量部署时只让最后一条命令真的推(默认 fs
  • --pages-root <path>:本地 Pages 存储的根路径,只对 --cloud fs 有效(默认 ~/.arc/pages
  • --cf-account-id <id>:Cloudflare 账号 ID,--cloud cf 读操作要用
  • --cf-api-token <token>:Cloudflare API token,--cloud cf 读操作要用
  • --deployment <id>:Cloudflare 部署环境 id(staging/prod/...),从 runtimes/cloudflare/instances.json 解析出 pagesProject;和 --project 互斥
  • --project <name>:Pages 项目名,给不在 instances.json 里的项目用的逃生口;和 --deployment 互斥;两者都不填时默认 afsd-blocklets

--deployment/--project 的互斥是声明并强制生效的,不只是文档说明:

bash
$ arc provider publish-resources @aigne/afs-ocap --deployment foo --project bar
ERROR: Arguments deployment and project are mutually exclusive

两个都不传、走 --cloud fs,是能真正发布成功的(cumulative staging 这个数每发布一次就会往上涨,你机器上跑出来的数字会不一样):

bash
$ arc provider publish-resources ./providers/runtime/ocap --cloud fs --pages-root /tmp/pages
Published 23 file(s) to /_providers/ocap@2.0.0-beta.48/
  package:  ./providers/runtime/ocap
  provider: ocap@2.0.0-beta.48
  bytes:    170952
  target:   local Pages store (cumulative staging: 1983 file(s))
  deploy:   deploy-1789005081569-e83ray