跳到主要內容

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