发布(Publishing)
--publish=web 会构建并签名一个 Rive 项目,再把它托管成任何人都能打开的公开页面:一个 URL 播放构建好的 .riv。单独使用 --publish 则把已签名的 .riv 写到磁盘。
rive login # 每台机器一次,与 --publish 使用同一会话
rive myproject --publish=web # 构建、签名、上传,并等待页面上线
# published my-scene
# https://my-scene-k2f9qa.pages.rive.app
发布页面(Publish a page)
1. 登录
rive login
发布需要已登录的会话,原因见签名与 Web 运行时。
2. 选择团队
页面属于团队,而不是你的个人文件。在编辑器中创建一个团队,或加入已有团队。
只有一个团队时,CLI 会自动选中。账户关联了多个团队时,CLI 会打开选择器让你挑选。也可以用 --team=<id> 跳过提问。
3. 发布
rive myproject --publish=web
CLI 会构建项目、签名、上传,等待页面上线,然后打印公开 URL。名称的来源依次是:你传入的 --name=<name>,项目曾经发布过时的 pages.name,再是 rive.yaml 中的项目 name。因此重命名项目不会挪走已有页面。
首次发布会把页面位置写入 rive.yaml 的 pages: 块。之后的发布不会改动它:
pages:
teamId: 77
name: "my-scene"
签名与 Web 运行时(Signing and the web runtime)
已发布的页面由 Rive Web 运行时播放,而 Web 运行时拒绝未签名的脚本。未签名的构建会加载但什么也不播放,所以 --publish=web 始终按 --publish 的方式构建。
水印规则与 --publish 相同。参见推送到 Rive 文件。
重新发布页面(Republish a page)
页面在团队内按名称标识。名称会转成小写 slug(a-z0-9 以外的字符变成短横线),URL 是该 slug 加上创建页面时一次性生成的短随机后缀。
用同一名称再次发布会替换该 URL 所提供的内容。URL 本身不变,因此你发出去的链接继续有效,并开始显示新构建。用不同名称发布会创建另一个页面、另一个 URL。
之后发布时的 --name=<name> 是一次性的:它发布到该名称,但不改 pages: 块,因此项目仍指向原来的页面。
从 CI 发布(Publish from CI)
--no-wait 在上传被接受后立即打印 URL 并退出,不等待页面上线。配合 --quiet 时,stdout 只有两行:名称(若有过期日期则带上),然后是 URL。
set -euo pipefail
url=$(rive myproject --publish=web --no-wait --quiet | tail -1)
在管道之前设置 pipefail。否则流水线报告的是 tail 的状态而不是 CLI 的,登录、构建或上传失败时仍会以 0 退出,任务带着空的 url 继续跑。
同时传入 --team=<id>,因为 stdin 不是终端时 CLI 不会自动选择团队。
发布按账户限流。触达上限时会报告 too many publishes for now。
设置控制条的初始状态(Set how the control bar starts)
已发布的页面带有一小条控件,用于适配、全屏和复制 URL。控制条会显示片刻,然后收成页面底部的一条边。--drawer=<mode> 改变它的起始方式:
| 模式 | 页面表现 |
|---|---|
docked | 保持控制条展开 |
hidden | 一开始只显示底部的边 |
none | 完全没有控制条 |
列出已发布的页面(List published pages)
用 list-published 列出已发布的页面。
rive myproject --list-published # 本项目发布在哪里
rive myproject --list-published=web # 该团队上的每个页面及其 URL
built 表示文件在磁盘上,并不表示它已签名。--once 写出的路径与 --publish=local 相同,因此 built 行仍可能是未签名构建。not published 表示没有找到项目 pages: 绑定对应的页面。
取消发布页面(Unpublish a page)
rive myproject --unpublish=web # 下线本项目的页面
rive myproject --unpublish=web --name=prototype # 按名称下线一个页面
--unpublish=web 无法撤销。URL 停止解析,文件被删除,名称被释放。再次发布该名称会生成新的 URL,旧链接不会回来。除非传入 --yes,否则 CLI 会要求确认;在 CI 中没有终端可供确认,请设置该标志。
页面过期(Page expiry)
在某些套餐上,页面可能在首次发布后过期。页面有过期日期时,发布会在第一行用你自己的时区打印它:
published my-scene (expires 4 Oct)
https://my-scene-k2f9qa.pages.rive.app
重新发布仍在线的页面会保留该日期。页面过期后,其 URL 保持离线,名称被释放,因此再次发布该名称会在新 URL 上创建新页面。
标志(Flags)
| 标志 | 作用 |
|---|---|
--publish=web | 构建、签名并发布页面 |
--team=<id> | 拥有该页面的团队,而不再询问 |
--name=<name> | 用此名称发布,而不是项目名称 |
--no-wait | 打印 URL 后立即退出,不等待页面上线 |
--drawer=<mode> | 页面控制条的起始方式:docked、hidden 或 none |
--list-published[=<target>] | 本项目发布在哪里。不加参数打印 local 和 web;web 列出团队上的每个页面 |
--unpublish=web | 下线该页面 |
--yes、-y | 跳过 --unpublish=web 的确认 |