arc provider 处理 provider 包本身(实现 AFS provider 的那些 npm 包)相关的操作,跟 arc afs 不一样,后者操作的是一个 provider 挂载之后暴露出来的东西。
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 拿到的。
用法
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 的互斥是声明并强制生效的,不只是文档说明:
$ arc provider publish-resources @aigne/afs-ocap --deployment foo --project bar
ERROR: Arguments deployment and project are mutually exclusive两个都不传、走 --cloud fs,是能真正发布成功的(cumulative staging 这个数每发布一次就会往上涨,你机器上跑出来的数字会不一样):
$ 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