CLI
hyperframes CLI 是使用 Hyperframes 的主要方式。它处理项目创建、实时预览、渲染、检查和诊断 — 全部通过终端完成。
npm install -g hyperframes
# 或直接使用 npx
npx hyperframes <command>
何时使用
在以下场景使用 CLI:
- 捕获网站用于视频制作(
capture) - 从示例创建新的合成项目(
init) - 带热重载预览合成(
preview) - 在本地或 Docker 中将合渲染为 MP4(
render) - 检查合成的结构问题(
lint) - 检查渲染后的视觉布局中的文本溢出和裁剪容器(
inspect) - 将关键帧捕获为 PNG 截图(
snapshot) - 检查环境中缺失的依赖项(
doctor)
如果需要以下功能,请使用其他包:
- 从 Node.js 代码以编程方式渲染 — 使用 producer
- 构建自定义帧捕获管道 — 使用 engine
- 在自己的 Web 应用中嵌入合成编辑器 — 使用 studio
- 在代码中解析或生成合成 HTML — 使用 core
💡 Tip
CLI 是所有 Hyperframes 用户的推荐起点。它封装了 producer、engine 和 studio 包,因此你不需要单独安装它们。
默认支持 Agent
CLI 默认支持 Agent:命令支持显式标志和可解析的输出,使自动化能够可靠运行。
- 输入可以通过标志传递(例如
--example、--video、--output) - 缺少必需标志时会快速失败,并给出清晰的错误信息和使用示例
- 输出为纯文本,适合解析
交互性因命令而异。例如,init 默认在 TTY 上使用提示符;传入 --non-interactive 可强制使用非交互模式。
--human-friendly 也是命令特定的(例如 catalog)。它不是每个命令的全局标志。
Agent 模式(默认)
# 完全非交互 — 所有输入来自标志
npx hyperframes init my-video --example blank --video video.mp4
npx hyperframes render --output output.mp4 --fps 30 --quality standard
npx hyperframes upgrade --check --json
人工模式
# 命令特定的交互流程
npx hyperframes init my-video
# catalog 支持的交互式选择器
npx hyperframes catalog --human-friendly
JSON 输出和 _meta 信封
所有支持 --json 的命令都会用包含版本检查信息的 _meta 字段包装输出:
{
"name": "my-video",
"duration": 10.5,
"_meta": {
"version": "0.1.4",
"latestVersion": "0.1.5",
"updateAvailable": true
}
}
这允许 Agent 从任何命令的输出中检测过时的版本,而无需运行单独的升级检查。版本数据来自 24 小时缓存 — --json 输出期间不会发起网络请求。
被动更新通知
CLI 在后台检查 npm 上的新版本(缓存 24 小时)。如果有更新可用,命令完成后会在 stderr 上显示通知:
Update available: 0.1.4 → 0.1.5
Run: npx hyperframes@latest
在 CI 环境、非 TTY shell 以及设置了 HYPERFRAMES_NO_UPDATE_CHECK=1 时,此通知会被抑制。
快速入门
创建项目
从示例创建新的合成项目:
npx hyperframes init --example warm-grain
系统会提示输入项目名称,或作为参数传递:
npx hyperframes init my-video --example warm-grain
参见示例了解所有可用示例。
在浏览器中预览
启动带有热重载的开发服务器:
cd my-video
npx hyperframes preview
Hyperframes Studio 会在你的浏览器中打开。编辑 index.html,预览会即时更新。
检查你的合成
在渲染前检查结构问题:
npx hyperframes lint
◆ Linting my-project/index.html
◇ 0 errors, 0 warnings
渲染为 MP4
生成最终视频:
npx hyperframes render --output output.mp4
渲染特定合成而非 index.html:
npx hyperframes render -c compositions/intro.html -o intro.mp4
要获得确定性输出,添加 --docker:
npx hyperframes render --docker --output output.mp4
命令
创建
init
从示例创建新的合成项目:
# Agent 模式(默认)— --example 是必需的
npx hyperframes init my-video --example blank --video video.mp4
# 包含 Tailwind CSS 浏览器运行时支持
npx hyperframes init my-video --example blank --tailwind
# 人工模式 — 默认在 TTY 上使用交互式提示
npx hyperframes init my-video
| 标志 | 描述 |
|---|---|
--example, -e | 要脚手架化的示例(默认模式下必需,在 --human-friendly 下交互式选择) |
--resolution | 画布预设:landscape (1920×1080)、portrait (1080×1920)、landscape-4k (3840×2160)、portrait-4k (2160×3840)、square (1080×1080)、square-4k (2160×2160)。别名:1080p、4k、uhd、1080p-square、square-1080p、4k-square。默认:保持模板尺寸。 |
--video, -V | 视频文件路径(MP4、WebM、MOV) |
--audio, -a | 音频文件路径(MP3、WAV、M4A) |
--tailwind | 为脚手架化的 HTML 添加 Tailwind CSS 浏览器运行时支持 |
--skip-skills | 跳过 AI 编程技能安装 |
--skip-transcribe | 跳过自动 whisper 转录 |
--model | 用于转录的 Whisper 模型(例如 small.en、medium.en、large-v3) |
--language | 转录的语言代码(例如 en、es、ja)。过滤非目标语言语音。 |
| 示例 | 描述 |
|---|---|
blank | 空合成 — 仅脚手架 |
warm-grain | 奶油美学配合颗粒纹理 |
play-mode | 俏皮的弹性动画 |
swiss-grid | 结构化网格布局 |
vignelli | 大胆的排版配合红色强调 |
在非交互模式下,--example 是必需的 — 如果缺少,CLI 会报错并给出使用示例。在交互模式下(TTY 默认),你可以交互式选择示例。传入 --non-interactive 可通过标志要求 --example。当提供 --video 或 --audio 时,CLI 会自动使用 Whisper 转录音频并将字幕补丁到合成中(使用 --skip-transcribe 禁用)。
--tailwind 将固定的 Tailwind v4 浏览器运行时注入脚手架化的 HTML,并暴露一个 window.__tailwindReady promise,渲染在捕获第 0 帧之前会等待它。编辑这些项目时使用 /tailwind 技能,这样 Agent 会遵循 v4 CSS 优先的模式,而非 v3 的 tailwind.config.js 和 @tailwind 指令模式。浏览器运行时仍适用于脚手架化项目和快速迭代;对于完全离线或锁定的生产渲染,请将 Tailwind 编译为 CSS 并直接包含样式表。
脚手架化后,CLI 会为 Claude Code、Gemini CLI 和 Codex CLI 安装 AI 编程技能(使用 --skip-skills 禁用)。参见 skills 命令。
参见示例了解完整详情。
add
从注册表安装块或组件到现有项目中。示例(完整项目)通过 init 脚手架化;块和组件是你可以添加到已有合成中的较小单元。
# 添加块(子合成场景)
npx hyperframes add claude-code-window
# 添加组件(效果/代码片段)
npx hyperframes add shader-wipe
# 指定不同的项目目录
npx hyperframes add shader-wipe --dir ./my-video
# 无头/CI(跳过剪贴板;同样:--json 获取机器可读结果)
npx hyperframes add shader-wipe --no-clipboard --json
| 标志 | 描述 |
|---|---|
<name>(位置参数) | 注册表项名称(例如 claude-code-window、shader-wipe) |
--dir | 项目目录(默认为当前工作目录) |
--no-clipboard | 跳过将包含代码片段复制到剪贴板 |
--json | 将机器可读的摘要(写入的文件 + 代码片段)输出到 stdout |
add 读取项目根目录的 hyperframes.json 以知道从哪个注册表拉取以及将文件放到哪里。如果文件不存在但目录看起来像 Hyperframes 项目(有 index.html),首次运行 add 时会写入默认的 hyperframes.json。
块或组件的输出是一组文件加上一个粘贴代码片段 — 要包含在宿主合成中的 <iframe> 标签(对于块)或片段路径(对于组件)。代码片段默认复制到剪贴板;在 CI 或无头环境中添加 --no-clipboard。
尝试使用示例名称运行 add(例如 hyperframes add warm-grain)会发出明确的错误,指向 init --example。
catalog
浏览注册表 — 列出可用的块和组件,支持可选筛选:
# 列出所有内容(默认:表格输出)
npx hyperframes catalog
# 按类型或标签筛选
npx hyperframes catalog --type block
npx hyperframes catalog --type block --tag social
# 机器可读的 JSON
npx hyperframes catalog --json
# 交互式选择器 — 选择以安装
npx hyperframes catalog --human-friendly
| 标志 | 描述 |
|---|---|
--type | 按 block 或 component 筛选 |
--tag | 按标签筛选(例如 social、transition、text) |
--json | 将匹配项以 JSON 格式输出(非交互式) |
--human-friendly | 交互式选择器 — 选择一项进行安装 |
默认输出是一个表格,列出名称、类型、描述和标签 — 专为 Agent 解析设计。--json 产生结构化输出。--human-friendly 打开一个交互式选择器,选择后执行 add。
compositions
列出当前项目中的所有合成:
npx hyperframes compositions
| 标志 | 描述 |
|---|---|
--json | 以 JSON 格式输出 |
显示每个合成的 ID、时长、分辨率和元素数量。
transcribe
将音频/视频转录为单词级时间戳,或导入现有转录:
# 使用本地 whisper.cpp 转录音频/视频
npx hyperframes transcribe audio.mp3
npx hyperframes transcribe video.mp4 --model medium.en --language en
# 从其他工具导入现有转录
npx hyperframes transcribe subtitles.srt
npx hyperframes transcribe captions.vtt
npx hyperframes transcribe openai-response.json
| 标志 | 描述 |
|---|---|
--dir, -d | 项目目录(默认:当前目录) |
--model, -m | Whisper 模型(默认:small.en)。选项:tiny.en、base.en、small.en、medium.en、large-v3 |
--language, -l | 语言代码(例如 en、es、ja)。过滤非目标语言语音。 |
--json | 以 JSON 格式输出结果 |
命令自动检测输入类型。音频/视频文件使用 whisper.cpp 转录。转录文件(.json、.srt、.vtt)会被规范化并导入。
支持的转录格式:
| 格式 | 来源 |
|---|---|
| whisper.cpp JSON | hyperframes init --video、hyperframes transcribe |
| OpenAI Whisper API JSON | openai.audio.transcriptions.create() 带有单词时间戳 |
| SRT 字幕 | 视频编辑器、YouTube、字幕工具 |
| VTT 字幕 | Web 播放器、YouTube、转录服务 |
所有格式都被规范化为标准的 [{text, start, end}] 单词数组,并保存为 transcript.json。如果项目有字幕 HTML 文件,它们会自动用转录数据补丁。
💡 Tip
对于音乐或嘈杂的音频,使用
--model medium.en以获得更好的准确性。对于生产内容的最佳效果,通过 OpenAI 或 Groq Whisper API 转录并导入 JSON。
tts
使用本地 AI 模型(Kokoro-82M)从文本生成语音音频。无需 API 密钥 — 完全在设备上运行。
# 从文本生成语音
npx hyperframes tts "Welcome to HyperFrames"
# 选择声音
npx hyperframes tts "Hello world" --voice am_adam
# 保存到指定文件
npx hyperframes tts "Intro" --voice bf_emma --output narration.wav
# 调整语速
npx hyperframes tts "Slow and clear" --speed 0.8
# 生成西班牙语语音(语言从声音 ID 前缀自动检测)
npx hyperframes tts "La reunión empieza a las nueve" --voice ef_dora --output es.wav
# 覆盖音素器(用法语声音朗读英文文本)
npx hyperframes tts "Bonjour le monde" --voice af_heart --lang fr-fr
# 从文件读取文本
npx hyperframes tts script.txt
# 列出可用声音
npx hyperframes tts --list
| 标志 | 描述 |
|---|---|
--output, -o | 输出文件路径(默认:当前目录下的 speech.wav) |
--voice, -v | 声音 ID(运行 --list 查看选项) |
--speed, -s | 语速倍率(默认:1.0) |
--lang, -l | 音素器区域设置(en-us、en-gb、es、fr-fr、hi、it、pt-br、ja、zh)。省略时从声音 ID 前缀推断。 |
--list | 列出可用声音并退出 |
--json | 以 JSON 格式输出结果 |
💡 Tip
声音 ID 的首字母编码了音素器语言(
a=美式、b=英式、e=西班牙语、f=法语、h=印地语、i=意大利语、j=日语、p=巴西葡萄牙语、z=普通话)。--lang仅在你想覆盖此推断时需要 — 例如,为英文文本提供法语音素器以实现风格化的口音。
💡 Tip
将
tts与transcribe结合使用,在单一工作流中生成旁白和字幕的单词级时间戳:使用tts生成音频,然后使用transcribe转录输出以获取单词级时间。
remove-background
使用本地 AI 模型从视频或图像中移除背景。输出是透明媒体,你可以放入任何合成的 <video> 或 <img> 元素中 — 无需绿幕。
# 默认:带 alpha 的 VP9 WebM(HTML5 原生,约 1 MB / 4s @ 1080p)
npx hyperframes remove-background avatar.mp4 -o transparent.webm
# ProRes 4444 .mov 用于编辑往返
npx hyperframes remove-background avatar.mp4 -o transparent.mov
# 单张图像 → 透明 PNG
npx hyperframes remove-background portrait.jpg -o cutout.png
# 图层分离:一次通过同时获取剪影和反向 alpha 背景板
npx hyperframes remove-background avatar.mp4 \
-o subject.webm --background-output plate.webm
# 在有 CoreML 或 CUDA 的机器上强制使用 CPU
npx hyperframes remove-background avatar.mp4 -o transparent.webm --device cpu
# 检查检测到的提供者而不渲染
npx hyperframes remove-background --info
| 标志 | 描述 |
|---|---|
--output, -o | 输出路径。格式从扩展名推断:.webm(默认)、.mov、.png |
--background-output, -b | 可选的第二输出:反向 alpha 背景板(主体区域透明,周围不透明)。相同的源 RGB,互补遮罩。必须为 .webm 或 .mov。挖孔裁切,非修补 — 在下方合成其他内容以填充孔洞。 |
--device | 执行提供者:auto(默认)、cpu、coreml、cuda |
--quality | WebM 编码器预设:fast(crf 30,最小)、balanced(crf 18,默认)、best(crf 12,接近无损)。更高质量使剪影的 RGB 更接近源 mp4 — 在将剪影叠加到其自身源上以实现主体后方文字效果时很重要。适用于 --output 和 --background-output。对 .mov / .png 忽略。 |
--info | 打印检测到的执行提供者并退出(不渲染) |
--json | 以 JSON 格式输出结果 |
模型为 u2net_human_seg(MIT,约 168 MB ONNX)。权重在首次运行时下载到 ~/.cache/hyperframes/background-removal/models/ 并在此后复用。峰值推理 RAM 约 1.5 GB。
--device auto 在 Apple Silicon 上选择 CoreML,有 CUDA 时选择 CUDA,否则选择 CPU。CLI 捆绑了 onnxruntime-node 的 CPU 构建版本;对于 CUDA,设置 HYPERFRAMES_CUDA=1 并提供启用 GPU 的 onnxruntime-node 构建版本。
输出格式:
| 格式 | 使用场景 | 大小(4s @ 1080p) |
|---|---|---|
.webm(VP9 alpha) | 放入 <video> 实现 HTML5 原生透明播放 | 约 1 MB |
.mov(ProRes 4444) | 在 Premiere / Resolve / DaVinci 中编辑往返 | 约 50 MB |
.png | 单张图像剪影 | 不定 |
💡 Tip
Chrome 中的
<video>元素仅在 WebM 以yuva420p编码并带有alpha_mode=1元数据标签时才识别 alpha 平面。CLI 会自动设置这两者 — 如果你自己重新编码输出,请保留这些标志。
参见移除背景指南了解完整工作流 — 在合成中使用透明视频、各平台的性能、u2net_human_seg 的限制,以及此模型不适合时的免费替代工具。
capture
捕获网站 — 提取截图、设计令牌、字体、资源和动画用于视频制作:
npx hyperframes capture https://stripe.com
npx hyperframes capture https://linear.app -o captures/linear
npx hyperframes capture https://example.com --json
◇ Captured Stripe | Financial Infrastructure → captures/stripe-com
Screenshots: 12
Assets: 45
Sections: 15
Fonts: sohne-var
| 标志 | 描述 |
|---|---|
-o, --output | 输出目录(默认:captures/<hostname>) |
--timeout | 页面加载超时(毫秒)(默认:120000) |
--skip-assets | 跳过下载图片和字体 |
--max-screenshots | 最大截图数量(默认:24) |
--json | 输出结构化 JSON 用于编程使用 |
capture 命令提取 AI Agent 理解网站视觉标识所需的一切:每个滚动深度的视口截图、调色板(像素采样 + DOM 计算)、字体文件、带语义名称的图片、SVG、Lottie 动画、视频预览、WebGL 着色器、可见文本和页面结构。
输出是一个自包含的目录,包含一个 CLAUDE.md 文件,任何 AI Agent 都可以读取以了解被捕获的站点。被 /website-to-hyperframes 技能用作视频制作管道的第一步。
在 .env 文件中设置 GEMINI_API_KEY 以通过 Gemini 视觉获取 AI 驱动的图片描述(约 $0.001/张)。详情请参阅 Website to Video 指南。
预览
preview
启动带热重载的实时预览服务器:
npx hyperframes preview [dir]
npx hyperframes preview --port 4567
| 标志 | 描述 |
|---|---|
--port | 预览服务器运行端口(默认:3002) |
在 Hyperframes Studio 中打开你的合成并提供实时预览。对 index.html 和所有引用的子合成的编辑会自动反映。预览使用与生产渲染相同的 Hyperframes 运行时,因此所见即所得。
ℹ️ Note
视觉输出与渲染完全匹配。播放性能则不同:预览在你的浏览器中实时播放,因此绘制密集的合成(大图片、叠加的
backdrop-filter层、许多带阴影的元素)可能会根据你的硬件出现卡顿。渲染的 mp4 始终是准确的 — 渲染逐帧捕获,因此每帧的开销表现为更长的渲染时间,而非丢帧。详情请参阅性能。
预览服务器以三种模式运行,自动检测:
- 嵌入模式(
npx的默认模式)— 运行独立服务器,将 studio 捆绑在 CLI 中。零额外依赖。 - 本地 studio 模式 — 如果项目
node_modules中安装了@hyperframes/studio,会启动带完整 HMR 的 Vite 以加快迭代。 - Monorepo 模式 — 如果从 Hyperframes 源码仓库运行,直接启动 studio 开发服务器。
publish
上传项目并获得一个稳定的 hyperframes.dev URL:
npx hyperframes publish [dir]
npx hyperframes publish --yes
| 标志 | 描述 |
|---|---|
--yes | 跳过确认提示 |
publish 压缩当前项目,上传到 Hyperframes 发布后端,并打印一个用于该存储项目的稳定 hyperframes.dev URL。
打印的 URL 已经包含认领令牌,因此在 hyperframes.dev 上打开它可以让目标用户认领上传的项目并在 Web 应用中继续编辑。
此流程不保持本地预览服务器运行,也不打开隧道。发布的 URL 解析到 HeyGen 存储的持久化项目,因此在 CLI 进程退出后仍可继续工作。
lint
检查合成的常见问题:
npx hyperframes lint [dir]
npx hyperframes lint [dir] --verbose # 包含 info 级别发现
npx hyperframes lint [dir] --json # 机器可读的 JSON 输出
◆ Linting my-project/index.html
✗ missing_gsap_script: Composition uses GSAP but no GSAP script is loaded.
⚠ unmuted-video [clip-1]: Video should have the 'muted' attribute for reliable autoplay.
◇ 1 error(s), 1 warning(s)
默认只打印错误和警告。Info 级别的发现(例如外部脚本依赖通知)被隐藏以保持 Agent 和 CI 的输出整洁。使用 --verbose 包含它们。
| 标志 | 描述 |
|---|---|
--json | 以 JSON 格式输出发现(包含 errorCount、warningCount、infoCount 和 findings 数组) |
--verbose | 在输出中包含 info 级别发现(默认隐藏) |
严重级别:
- Error (
✗) — 渲染前必须修复(例如缺少适配器库、无效属性) - Warning (
⚠) — 可能导致异常行为的潜在问题 - Info (
ℹ) — 信息性通知,仅在使用--verbose时显示
Linter 会检测缺少的属性、缺少的适配器库(GSAP、Lottie、Three.js)、结构问题等。详情请参阅常见错误。
inspect
检查合成时间轴上的渲染视觉布局:
npx hyperframes inspect [dir]
npx hyperframes inspect [dir] --json
npx hyperframes inspect [dir] --samples 15
npx hyperframes inspect [dir] --at 1.5,4,7.25
◆ Inspecting layout for my-project (9 timeline samples)
✗ text_box_overflow t=3.25s #headline inside .bubble overflowed right 18px — "Quarterly plan"
Fix: Text is 418px x 42px inside 400px x 120px and overflows by up to 18px; widen the container to at least ~418px, or allow wrapping with max-width/fitTextFontSize.
◇ 1 error(s), 0 warning(s), 0 info(s)
inspect 打包项目,在本地提供服务,打开无头 Chrome,跳转合成,并报告逃出其预期框的文本或元素。它专为 Agent 工作流设计:每个发现包含 schema 版本、时间戳或折叠的时间戳范围、选择器、最近容器选择器、测量的边界框、溢出边和修复提示。
| 标志 | 描述 |
|---|---|
--json | 输出 Agent 可读的发现,包含 schemaVersion、samples、issues、边界框和摘要计数 |
--samples | 合成持续时间内的中点采样数量(默认:9) |
--at | 以逗号分隔的秒数时间戳,用于显式的主帧检查 |
--tolerance | 报告问题前允许的像素溢出量(默认:2) |
--timeout | 等待运行时初始化的毫秒数(默认:5000) |
--collapse-static | 在采样间折叠重复的静态问题(默认:true) |
--max-issues | 静态折叠后打印或返回的最大发现数(默认:80) |
--strict | 在警告和错误时都以非零退出 |
当溢出是有意的时候(例如计划的画布外入场),在元素或祖先上使用 data-layout-allow-overflow。对于不应被审计的装饰元素使用 data-layout-ignore。
layout 仍作为同一视觉检查的兼容别名可用:
npx hyperframes layout [dir] --json
snapshot
将合成中的关键帧捕获为 PNG 截图 — 无需完整渲染即可验证视觉输出:
npx hyperframes snapshot my-project --at 2.9,10.4,18.7
npx hyperframes snapshot my-project --frames 10
◆ Capturing 3 frames at [2.9s, 10.4s, 18.7s] from my-project
◇ 3 snapshots saved to snapshots/
snapshots/frame-00-at-2.9s.png
snapshots/frame-01-at-10.4s.png
snapshots/frame-02-at-18.7s.png
| 标志 | 描述 |
|---|---|
--frames | 要捕获的均匀间隔帧数(默认:5) |
--at | 以逗号分隔的秒数时间戳(例如 3.0,10.5,18.0) |
--timeout | 等待运行时初始化的毫秒数(默认:5000) |
snapshot 命令打包项目,在本地提供服务,启动无头 Chrome,跳转到每个时间戳,并捕获 1920×1080 的 PNG。在 website-to-video 工作流的构建步骤中用于视觉验证。
构建
render
将合渲染为 MP4 或 WebM:
# 本地模式(快速迭代)
npx hyperframes render --output output.mp4
# Docker 模式(确定性输出)
npx hyperframes render --docker --output output.mp4
# 带透明度的 WebM(用于覆盖层、字幕、下方三分之一标题)
npx hyperframes render --format webm --output overlay.webm
# 使用选项
npx hyperframes render --output output.mp4 --fps 60 --quality high
# 退出本地浏览器 GPU 捕获
npx hyperframes render --no-browser-gpu --output cpu-browser.mp4
# 添加硬件 FFmpeg 编码
npx hyperframes render --gpu --output gpu.mp4
| 标志 | 值 | 默认值 | 描述 |
|---|---|---|---|
--output | 路径 | renders/<name>.mp4 | 输出文件路径 |
--format | mp4、webm、mov、png-sequence | mp4 | 输出格式(WebM/MOV 带透明度渲染;png-sequence 写入 RGBA PNG 目录) |
--fps | 24、30、60 | 30 | 每秒帧数 |
--quality | draft、standard、high | standard | 编码质量预设(驱动 CRF/比特率) |
--crf | 0-51 | — | 覆盖编码器 CRF(值越低 = 质量越高)。与 --video-bitrate 互斥 |
--video-bitrate | 例如 10M、5000k | — | 目标视频比特率。与 --crf 互斥 |
--resolution | landscape、portrait、landscape-4k、portrait-4k、square、square-4k(别名:1080p、4k、uhd、1080p-square、square-1080p、4k-square) | — | 输出分辨率预设。通过 Chrome deviceScaleFactor 对较小的合成进行超采样,使截图达到请求的尺寸。宽高比必须匹配合成;缩放必须是整数倍。不支持 --hdr。参见 4K 渲染 |
--hdr | — | off | 即使未检测到 HDR 源也强制 HDR 输出。仅限 MP4。参见 HDR 渲染 |
--sdr | — | off | 即使检测到 HDR 源也强制 SDR 输出 |
--workers | 1-8 | 4 | 并行渲染 worker 数量 |
--gpu | — | off | GPU 编码(NVENC、VideoToolbox、AMF、VAAPI、QSV) |
--browser-gpu / --no-browser-gpu | — | 本地 on,Docker off | 使用或退出本地 Chrome/WebGL 捕获的主机 GPU 加速 |
--docker | — | off | 使用 Docker 进行确定性渲染 |
--quiet | — | off | 抑制详细输出 |
--variables | JSON 对象 | — | 变量覆盖,合并到 data-composition-variables 默认值之上。通过 window.__hyperframes.getVariables() 读取 |
--variables-file | 路径 | — | 包含变量覆盖的 JSON 文件路径(--variables 的替代方式) |
--strict-variables | — | off | 如果任何 --variables 键未声明或与合成的 data-composition-variables 类型不匹配则渲染失败。不使用此标志时,不匹配会打印警告且渲染继续。 |
CRF 和目标比特率默认为 --quality 预设。使用 --crf 或 --video-bitrate 进行细粒度覆盖;RenderConfig.crf 和 RenderConfig.videoBitrate 在编程方式中接受相同的覆盖。
参数化渲染
通过在合成根上声明变量并在渲染时覆盖它们,使用不同的内容渲染相同的合成:
<html
data-composition-id="root"
data-composition-variables='[
{"id":"title","label":"Title","type":"string","default":"Hello"},
{"id":"theme","label":"Theme","type":"enum","options":[
{"value":"light","label":"Light"},
{"value":"dark","label":"Dark"}
],"default":"light"}
]'>
<body>
<h1 id="hero" class="clip" data-start="0" data-duration="3"></h1>
<script>
const vars = window.__hyperframes.getVariables();
document.getElementById("hero").textContent = vars.title;
document.body.dataset.theme = vars.theme;
</script>
</body>
</html>
# 使用声明的默认值渲染(预览也使用默认值)
npx hyperframes render --output default.mp4
# 在渲染时覆盖 — 缺失的键回退到声明的默认值
npx hyperframes render --variables '{"title":"Q4 Report","theme":"dark"}' --output q4.mp4
# 从 JSON 文件传递值
npx hyperframes render --variables-file ./vars.json --output out.mp4
getVariables() 返回声明的默认值与任何 --variables 覆盖的合并结果,因此相同的合在开发预览和生产渲染中无需更改即可运行。
WebM 透明度
使用 --format webm 渲染带透明背景的合成。这会产生带有 alpha 通道的 VP9 视频,封装在 WebM 容器中 — 这是可叠加视频的标准格式。
# 渲染带透明背景的字幕覆盖层
npx hyperframes render --format webm --output captions.webm
# 使用 FFmpeg 叠加到另一个视频上
ffmpeg -c:v libvpx-vp9 -i captions.webm -i background.mp4 \
-filter_complex "[1:v][0:v]overlay=0:0" -y composited.mp4
💡 Tip
要使透明度生效,你的合成 HTML 应在根元素上使用
background: transparent。WebM 渲染使用 PNG 帧捕获(而非 JPEG)以保留 alpha 通道。
参见渲染了解所有选项和模式。
benchmark
为你的系统找到最优的渲染设置:
npx hyperframes benchmark [dir]
| 标志 | 值 | 默认值 | 描述 |
|---|---|---|---|
--runs | 1-20 | 3 | 每个配置的运行次数 |
--json | — | off | 以 JSON 格式输出结果 |
运行多个渲染配置(变化的 fps、质量和 worker 数量),并比较每种组合的耗时和文件大小。
工具
doctor
检查你的环境中所需的依赖项:
npx hyperframes doctor
hyperframes doctor
✓ Version 0.1.4 (latest)
✓ Node.js v22.x (linux x64)
✓ FFmpeg 7.x
✓ FFprobe 7.x
✓ Chrome (system or cached)
✓ Docker 24.x
✓ Docker running Running
◇ All checks passed
| 标志 | 描述 |
|---|---|
--json | 以 JSON 格式输出(包含 _meta 信封) |
验证 CLI 版本、Node.js、FFmpeg、FFprobe、Chrome 和 Docker 可用性。如果有更新的 CLI 版本可用,版本行会显示升级提示。
CI 门控。 hyperframes doctor --json 在成功执行时始终以 0 退出 — 如果命令产生了有效输出就表示成功。环境是否健康承载在有效载荷的 ok 字段中,因此新的 CLI 版本(将 Version.ok 翻转为 false)永远不会破坏你的流水线。通过 jq 管道处理以基于有效载荷进行门控:
hyperframes doctor --json | jq -e '.ok' > /dev/null || handle_failure
JSON 模式下 detail 和 hint 中的路径被脱敏 — 用户的主目录替换为字面量 $HOME,因此输出可以安全地粘贴到 bug 报告和 Agent 上下文中。
info
显示项目元数据:
npx hyperframes info [dir]
| 标志 | 描述 |
|---|---|
--json | 以 JSON 格式输出 |
显示项目名称、分辨率、时长、按类型统计的元素数量、轨道数量和项目总大小。
upgrade
检查更新并显示升级说明:
npx hyperframes upgrade
npx hyperframes upgrade --check # 检查并退出(无提示)
npx hyperframes upgrade --check --json # 机器可读的 Agent 友好格式
npx hyperframes upgrade --yes # 显示升级命令而不提示
| 标志 | 描述 |
|---|---|
--check | 检查更新并退出(无提示,Agent 友好) |
--json | 以 JSON 格式输出(包含 _meta 信封) |
--yes, -y | 显示升级命令而不提示 |
将你安装的版本与 npm 上的最新版本进行比较。使用 --check --json 返回:
{
"current": "0.1.4",
"latest": "0.1.5",
"updateAvailable": true,
"_meta": { "version": "0.1.4", "latestVersion": "0.1.5", "updateAvailable": true }
}
browser
管理用于渲染的 Chrome 浏览器:
# 查找或下载 Chrome 用于渲染
npx hyperframes browser ensure
# 打印浏览器可执行文件路径(用于脚本)
npx hyperframes browser path
# 移除缓存的 Chrome 下载
npx hyperframes browser clear
path 子命令仅输出路径,在脚本中很有用:$(npx hyperframes browser path)。
docs
在终端中查看内联文档:
npx hyperframes docs [topic]
可用主题:data-attributes、examples、rendering、gsap、troubleshooting、compositions。不带主题运行可查看完整列表。
feedback
提交关于你体验的匿名满意度反馈:
# 快速评分(1 = 差,5 = 好)
npx hyperframes feedback --rating 5
# 评分附带可选详情
npx hyperframes feedback --rating 3 --comment "render succeeded but GSAP timeline didn't animate"
| 标志 | 描述 |
|---|---|
--rating | 满意度分数,1-5(必需) |
--comment | 可选的自由文本详情 |
此命令在渲染后也对 AI Agent 可用 — 参见反馈收集了解 Agent 检测和自动渲染后提示的工作原理。
当遥测被禁用时不执行任何操作 — 打印 Telemetry is disabled. Feedback not sent. 并正常退出。
telemetry
管理匿名使用遥测:
npx hyperframes telemetry enable
npx hyperframes telemetry disable
npx hyperframes telemetry status
遥测收集命令名称、渲染性能、示例选择和系统信息 — 包括粗略的环境指纹(操作系统、内核字符串、CPU/内存规格、沙箱运行时如 gVisor 或 Docker,以及驱动 CLI 的编码 Agent 的名称,例如 claude_code / codex / cursor)。Agent 名称从知名环境变量的存在性推导;它们的值从不被读取。遥测不收集文件路径、项目名称、视频内容、环境变量值或个人身份信息。使用 HYPERFRAMES_NO_TELEMETRY=1 或上述命令禁用。
参见反馈收集了解周期性渲染后提示和 Studio 反馈栏的工作原理、它们收集的数据以及如何选择退出。
skills
为 AI 编程工具安装 HyperFrames 技能,包括一方运行时适配器技能:
# 安装到所有默认目标(Claude Code、Gemini CLI、Codex CLI)
npx hyperframes skills
# 安装到特定工具
npx hyperframes skills --claude
npx hyperframes skills --cursor
npx hyperframes skills --claude --gemini
| 标志 | 描述 |
|---|---|
--claude | 安装到 Claude Code(~/.claude/skills/) |
--gemini | 安装到 Gemini CLI(~/.gemini/skills/) |
--codex | 安装到 Codex CLI(~/.codex/skills/) |
--cursor | 安装到 Cursor(当前项目中的 .cursor/skills/) |
技能从 GitHub 获取,包括合成编写、Tailwind v4 浏览器运行时指导、GSAP 动画模式、Anime.js、CSS 动画、Lottie、Three.js 和 WAAPI 适配器模式、注册表块/组件接线以及其他领域特定知识。init 命令在脚手架化项目后也会提供自动安装技能的选项。
故障排查:fatal: active post-checkout hook found during git clone
如果你全局安装了 Git LFS(git lfs install),Git 2.45+ 会在任何 git clone 期间拒绝运行 LFS post-checkout hook — 包括上游 skills CLI 底层执行的克隆。错误如下:
■ Failed to clone repository
fatal: active `post-checkout` hook found during `git clone`
└ Installation failed
使用 hyperframes skills 已经没问题 — 从 v0.4.5 开始,CLI 在子环境上设置 GIT_CLONE_PROTECTION_ACTIVE=0,这是 Git 为此场景提供的选择启用选项。你不需要做任何事情。
如果你直接运行了 npx skills add heygen-com/hyperframes(绕过 HyperFrames CLI),请自行设置环境变量:
GIT_CLONE_PROTECTION_ACTIVE=0 npx skills add heygen-com/hyperframes
此问题在 GH #316 中跟踪。skills CLI 本身的上游修复才是正确的长期方案;在此之前,环境变量是正确的变通方法。
hyperframes auth
登录 HeyGen 并管理凭证。凭证存储在 ~/.heygen/credentials(模式 0600),并且与 heygen CLI 共享 — 用一个登录,另一个会获取会话。
解析顺序(首次匹配优先):
HEYGEN_API_KEY环境变量HYPERFRAMES_API_KEY环境变量(hyperframes 别名)~/.heygen/credentials
子命令
auth login --api-key
保存 HeyGen API 密钥。密钥会在命令报告成功前通过 GET /v3/users/me 验证;被拒绝的密钥不会留在磁盘上。
# 交互式隐藏输入提示
hyperframes auth login --api-key
# 从 stdin 管道传入密钥(CI 友好)
echo "$HEYGEN_API_KEY" | hyperframes auth login --api-key
auth status
显示活跃凭证的来源、类型和已验证身份(账户 + 计费快照)。未配置或 API 拒绝凭证时以非零退出,以便脚本可以检查登录状态。
hyperframes auth status
hyperframes auth status --json # 机器可读
auth logout
移除存储的凭证。在 TTY 上提示确认。
hyperframes auth logout
hyperframes auth logout --keep-api-key # 仅清除 OAuth 会话
hyperframes auth logout --yes # 跳过确认提示
环境变量
| 变量 | 描述 |
|---|---|
HEYGEN_API_KEY | 覆盖存储的凭证。 |
HYPERFRAMES_API_KEY | HEYGEN_API_KEY 的别名。 |
HEYGEN_API_URL | API 基础 URL(默认 https://api.heygen.com)。 |
HEYGEN_CONFIG_DIR | 凭证目录(默认 ~/.heygen)。 |
hyperframes cloud
在 HeyGen 托管云上渲染 HyperFrames 合成 — 无需本地 Chrome、无需本地 ffmpeg、无需管理 AWS。使用 hyperframes auth login 登录一次,相同的凭证驱动所有 cloud 子命令。
hyperframes auth login # 一次性
hyperframes cloud render ./my-video # 压缩 + 上传 + 轮询 + 下载
hyperframes cloud render ./my-video --no-wait # 提交并以 render_id 退出
hyperframes cloud list # 浏览最近的渲染
子命令
cloud render [<projectDir>]
端到端渲染:压缩项目(排除 .git、node_modules、dist、.next、coverage、点文件),通过 POST /v3/assets 上传,提交 POST /v3/hyperframes/renders,轮询 GET /v3/hyperframes/renders/{id} 直到渲染完成或失败,并将结果视频流式传输到磁盘。
渲染参数与本地 hyperframes render 的 UX 在重叠处保持一致:
| 标志 | 默认值 | 含义 |
|---|---|---|
--fps | 30 | 整数 1-240。 |
--quality | standard | draft、standard 或 high。 |
--format | mp4 | mp4、webm 或 mov。 |
--resolution | 合成默认值 | landscape、portrait、landscape-4k、portrait-4k、square、square-4k。 |
--composition / -c | index.html | zip 内的入口 HTML 文件。 |
--variables | — | 内联 JSON 对象覆盖 data-composition-variables。 |
--variables-file | — | JSON 文件路径(--variables 的替代方式)。 |
--strict-variables | off | 当变量未声明或类型错误时失败。 |
--title | — | 自由文本标签,在详细响应中回显。 |
--output / -o | renders/<render_id>.<ext> | 下载视频的本地目标路径。 |
生命周期/控制标志:
| 标志 | 含义 |
|---|---|
--no-wait | 提交并立即退出;将 render_id 打印到 stdout。 |
--callback-url | 渲染终止时触发的 HTTPS webhook(与 --no-wait 组合使用)。 |
--callback-id | webhook 有效载荷中回显的不透明跟踪 ID。 |
--asset-id | 跳过压缩+上传;提交已上传的合成。与项目目录和 --url 互斥。 |
--url | 提交公共 HTTPS zip URL。与 --asset-id 的互斥关系相同。 |
--poll-interval | 轮询频率(秒)(默认 10)。 |
--max-wait | 最大轮询时长(分钟)(默认 60)。 |
--idempotency-key | 可选的 Idempotency-Key 用于安全重试(1-255 个字符,来自 [A-Za-z0-9_:.-])。 |
--json | 发出机器可读的 JSON 而非友好进度。 |
# 默认流程 — 渲染当前目录。
hyperframes cloud render
# 选择合成 + 输出路径。
hyperframes cloud render . \
--composition compositions/intro.html \
--output ./renders/intro.mp4
# 更高质量,60fps。
hyperframes cloud render --quality high --fps 60
# 使用 webhook 的即发即忘(无本地轮询)。
hyperframes cloud render --callback-url https://example.com/hf-hook --no-wait
# 重新渲染已上传的合成(跳过压缩 + 上传)。
hyperframes cloud render --asset-id asst_abc123
# 从公共 URL 渲染(无需上传)。
hyperframes cloud render --url https://cdn.example.com/site.zip
通过 --idempotency-key 实现安全重试
CLI 在遇到 401 Unauthorized 时会透明重试,通过强制刷新 OAuth 令牌并重放失败的请求。对于大多数读操作这是无害的,但 POST /v3/assets(zip 上传)本身不是幂等的 — 没有 Idempotency-Key 的重试会创建重复资产并为工作区收取两次费用。
当你希望 cloud render 安全重试时,传入 --idempotency-key <key>。该密钥会转发到上传和提交调用;服务器按端点划分幂等性,因此在两个步骤中复用相同的值是安全的,可以防止任一步骤的重复。每个逻辑渲染使用一个 UUID,或任何 [A-Za-z0-9_:.-] 中的不透明字符串(1-255 个字符)。
hyperframes cloud render . --idempotency-key "$(uuidgen)"
cloud list
分页浏览最近的渲染。基于游标:--limit 限制单页数量(1-100),--token 从之前的 next_token 继续,--all 遍历完整列表直到耗尽。
hyperframes cloud list
hyperframes cloud list --limit 50 --json
hyperframes cloud list --all
cloud get <render_id>
获取一个渲染的完整详细记录,包括短期签名的 video_url 和 thumbnail_url(预签名的 S3 URL — 按需获取而非缓存)。
hyperframes cloud get hfr_abc123
hyperframes cloud get hfr_abc123 --json
cloud delete <render_id>
软删除一个渲染。后续 GET 调用返回 404,签名的视频 URL 短暂后也会失效。交互式提示确认;脚本使用 --no-confirm 跳过。
hyperframes cloud delete hfr_abc123
hyperframes cloud delete hfr_abc123 --no-confirm --json
何时选择 cloud vs lambda vs 本地渲染
hyperframes render(本地):最快的迭代循环。合成编写期间使用。hyperframes lambda render:自带 AWS 分布式渲染。当你已经投资 AWS 并希望在自己的账户上获得分块并行性时使用。hyperframes cloud render:零基础设施选项。HeyGen 运行渲染;你按积分付费。当你不想在本地管理 Chrome/ffmpeg/AWS 时使用。
认证 + 基础 URL
cloud 复用 hyperframes auth status 解析的凭证。使用 HEYGEN_API_URL(默认 https://api.heygen.com)覆盖用于暂存测试的 API 基础 URL。
hyperframes lambda
将 HyperFrames 分布式渲染部署到 AWS Lambda,并从你的笔记本电脑或 CI 驱动渲染。
hyperframes lambda 命令组封装了 @hyperframes/aws-lambda SDK 加上 AWS SAM,因此端到端渲染只需要三个命令:
hyperframes lambda deploy
hyperframes lambda render ./my-project --width 1920 --height 1080 --wait
hyperframes lambda destroy # 完成后
前提条件
- 已配置 AWS 凭证(环境变量、
~/.aws/credentials、SSO 或 IMDS)。 - AWS SAM CLI 在
PATH上。 bun在PATH上(用于构建 Lambda handler ZIP)。
子命令
lambda deploy
构建 packages/aws-lambda/dist/handler.zip 并 SAM 部署 examples/aws-lambda/template.yaml 处的堆栈。成功后写入 <cwd>/.hyperframes/lambda-stack-<stackName>.json,这样其他子命令无需重新推导 bucket / 状态机 ARN。
hyperframes lambda deploy \
--stack-name=hyperframes-prod \
--region=us-east-1 \
--concurrency=8 \
--memory=10240
幂等 — 在相同 --stack-name 上重新运行时,如果没有变更则解析为空操作。
lambda sites create <projectDir>
压缩并上传 <projectDir> 到 S3,使用内容寻址键。返回一个 siteId,你可以在多次渲染中复用,这样相同树的重新渲染会跳过上传。
hyperframes lambda sites create ./my-project
# → siteId: abc1234deadbeef0 (相同树的重新运行稳定)
hyperframes lambda render ./my-project --site-id=abc1234deadbeef0 --width 1920 --height 1080
lambda render <projectDir>
启动一个 Step Functions 执行。立即返回 renderId(使用 lambda progress 轮询),除非设置了 --wait,在这种情况下 CLI 会阻塞直到渲染完成并流式传输每块的进度行。
hyperframes lambda render ./my-project \
--width=1920 --height=1080 --fps=30 --format=mp4 \
--chunk-size=240 --max-parallel-chunks=16 \
--wait
--json 将友好输出替换为机器可解析的 JSON 快照。
合成可以通过 --variables / --variables-file 进行参数化,镜像本地 hyperframes render 标志。变量流入 Step Functions 执行输入,并作为 window.__hfVariables 到达每个块 worker。与合成的 data-composition-variables 声明不匹配会打印为警告;传入 --strict-variables 可使命令失败。
hyperframes lambda render ./my-template --site-id=abc1234deadbeef0 \
--width=1920 --height=1080 \
--variables '{"title":"Hello Alice","accent":"#ff0000"}'
hyperframes lambda render ./my-template --site-id=abc1234deadbeef0 \
--width=1920 --height=1080 \
--variables-file ./alice.json --strict-variables
变量在 Step Functions Standard 执行输入中传输,AWS 将整个有效载荷限制为 256 KiB。通过变量传递类型化数据(字符串、数字、结构化记录);URL 引用媒体资源(图片、音频、视频),合成在渲染时解析而非内联字节。SDK 在客户端验证大小并在任何 AWS 调用运行之前以清晰的错误拒绝超大输入 — 参见 templates-on-lambda 指南了解 URL 化资源的约定。
lambda render-batch <projectDir>
从 JSONL 批处理文件分发 N 个个性化渲染 — 这是自动化模板渲染管道的核心人体工程学。部署站点一次(或使用 --site-id 跳过),然后为每批行调用 renderToLambda,每条带有 variables 和 outputKey。并发 Step Functions 启动受 --max-concurrent(默认 50)限制,这样 10,000 条目的批处理不会尝试同时生成 10,000 个执行并触发 AWS 账户限制。
批处理文件格式(JSONL — 每行一个 JSON 对象):
{"outputKey": "renders/alice.mp4", "variables": {"name": "Alice", "accent": "#ff0000"}}
{"outputKey": "renders/bob.mp4", "variables": {"name": "Bob", "accent": "#0000ff"}}
{"outputKey": "renders/carol.mp4", "variables": {"name": "Carol"}, "executionName": "hf-carol-001"}
hyperframes lambda render-batch ./my-template \
--batch ./users.jsonl \
--width 1920 --height 1080 \
--max-concurrent 10
该命令打印一个清单 — 每行一个输入 — 带有 executionArn + 状态:
Batch dispatched: 3 started, 0 failed-to-start.
✓ line 1 renders/alice.mp4 arn:aws:states:us-east-1:1234:execution:hf:hf-render-...
✓ line 2 renders/bob.mp4 arn:aws:states:us-east-1:1234:execution:hf:hf-render-...
✓ line 3 renders/carol.mp4 arn:aws:states:us-east-1:1234:execution:hf:hf-carol-001
传入 --json 获取机器可读形式。通过 hyperframes lambda progress <renderId> 轮询每个执行(或使用返回的 executionArn)。
--dry-run 跳过 AWS 调用并打印清单,每条显示 status: "would-invoke" — 在提交 N 个计费执行之前用于检查批处理文件:
hyperframes lambda render-batch ./my-template --batch ./users.jsonl \
--width 1920 --height 1080 --dry-run --json
--max-concurrent 仅在编排器侧:它限制同时运行的 StartExecution 调用数量,而非账户可运行的 Lambda 调用数量。AWS 账户级 Lambda 并发限制位于更上层,render-batch 无法强制执行;根据你的账户的 concurrent-execution 配额和你通过 lambda deploy --concurrency=<N> 配置的 Lambda 保留并发来选择 --max-concurrent。
lambda progress <renderId | executionArn>
打印一个进度快照 — 总体百分比、已渲染帧数、Lambda 调用次数、累计费用和任何错误。接受裸 renderId(解析到堆栈的状态机 ARN)或完整的 SFN 执行 ARN。
hyperframes lambda progress hf-render-abcd1234
lambda destroy
调用 sam delete --no-prompts 并删除本地状态文件。渲染 S3 bucket 使用 CloudFormation Retain 配置,因此在销毁时会保留 — 如果你想回收存储,可以通过 AWS 控制台/CLI 清空并删除它。
lambda policies role | user | validate
打印或验证 CLI 部署/调用/销毁堆栈所需的最小 IAM 策略。
# 打印可附加到运行 CLI 的 IAM 用户的内联策略文档。
hyperframes lambda policies user
# 打印 { TrustRelationship, InlinePolicy } 用于 IAM 角色(默认:cloudformation 主体)。
hyperframes lambda policies role --principal=cloudformation
# 验证已签入的策略仍覆盖 CLI 的需求。
hyperframes lambda policies validate ./infra/iam/hyperframes-deploy.json
validate 读取 JSON 文档并检查其 Effect: Allow 操作的并集是否覆盖 CLI 所需的操作集,展开 s3:* / s3:Get* / * 通配符。缺少的操作会打印到 stderr,命令以非零退出 — 将其集成到 CI 中以在下次部署失败之前捕获漂移。
操作列表故意很广(Resource: "*"),因为 CloudFormation 在每个采用者的首次部署上创建新的函数/状态机/bucket ARN。安全态势更严格的采用者应在首次成功运行后将 Resource 缩窄到已部署的 ARN。
状态文件
hyperframes lambda 在 <cwd>/.hyperframes/lambda-stack-<name>.json 下保存每个堆栈的元数据,这样命令无需每次都调用 describe-stacks。根据你的工作流将文件签入仓库或 .gitignore — 它包含 bucket 名称、状态机 ARN 和区域,这些都不是密钥但都可识别 AWS 账户。
hyperframes.json
hyperframes init 在每个新项目的根目录写入 hyperframes.json 文件。hyperframes add 读取它以知道从哪个注册表拉取项以及将它们放到哪里。编辑文件(或删除它以回退到默认值)以重塑项目布局或指向自定义注册表。
{
"$schema": "https://hyperframes.heygen.com/schema/hyperframes.json",
"registry": "https://raw.githubusercontent.com/heygen-com/hyperframes/main/registry",
"paths": {
"blocks": "compositions",
"components": "compositions/components",
"assets": "assets"
}
}
| 字段 | 描述 |
|---|---|
registry | add 拉取的注册表基础 URL。默认为公共 Hyperframes 注册表。 |
paths.blocks | 块 .html 文件的位置(相对于项目根目录)。 |
paths.components | 组件文件的位置(相对于项目根目录)。 |
paths.assets | 引用的资源文件(图片、字体)的位置。 |
缺失的字段用默认值填充 — 你只需要指定要覆盖的内容。