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