# slidestage-pack CLI 参考
`slidestage-pack` 把 HTML 幻灯片目录、单文件 HTML、zip 或已有 `.stage` 打包成 SlideStage 可播放的 `.stage` 文件。
推荐流程永远是:
```text
detect -> pack -> verify
```
## detect
探测源目录或文件的框架类型。
```bash
node scripts/detect_framework.mjs
```
输出包含:
- `kind`:识别到的源类型。
- `rootHtml`:入口 HTML。
- `recommendedMode`:推荐打包模式。
- `hints`:辅助说明。
常见 `kind`:
- `slidestage@1.0`
- `reveal`
- `impress`
- `inline-deck`
- `webcomponent-deck`
- `router-html`
- `plain-html`
- `ambiguous`
- `empty`
## pack
打包为 `.stage`。
```bash
node scripts/pack_stage.mjs \
--src ./my-deck \
--out ./my-deck.stage
```
常用参数:
| 参数 | 说明 |
| --- | --- |
| `--src ` | 源目录、HTML、zip 或 `.stage`。 |
| `--out ` | 输出 `.stage` 路径。 |
| `--mode ` | 显式指定 `split`、`wrap`、`single` 或 `passthrough`。 |
| `--title ` | 覆盖 manifest title。 |
| `--author ` | 写入 manifest author。 |
| `--id ` | 覆盖 manifest id。 |
| `--version ` | 覆盖 manifest version。 |
| `--width ` | 设置逻辑舞台宽度。 |
| `--height ` | 设置逻辑舞台高度。 |
| `--thumbnails` | 生成缩略图,需要 Playwright。 |
| `--fallback` | 写入可解压本地播放的 fallback 文件。 |
| `--strict` | warnings 视为错误。 |
| `--strict-schema` | 使用 `@slidestage/spec` 做权威 schema 校验。 |
| `--use-core` | 委托给 `@slidestage/core/converter`。 |
## verify
校验 `.stage` 是否可交付。
```bash
node scripts/verify_stage.mjs ./my-deck.stage
```
校验内容:
- zip 可解压。
- 根目录有 `manifest.json`。
- `schema === "slidestage@1.0"`。
- 必填字段存在。
- slide 文件都存在。
- 路径安全。
- 包大小、单文件大小、slide 数量不超过限制。
- `totalSlides` 与 `slides.length` 一致。
- `slides[].index` 顺序正确。
## 模式选择
| 模式 | 用途 |
| --- | --- |
| `split` | 每张 slide 输出一个独立 HTML,适合结构化 inline deck。 |
| `wrap` | 保留原框架 runtime,适合 reveal.js / impress.js。 |
| `single` | 普通 HTML 作为一张 slide。 |
| `passthrough` | 已有 `.stage` 重新校验/打包。 |
默认使用自动模式。只有你明确知道取舍时才手动覆盖。
## 何时使用 `--use-core`
如果当前环境已经能 import `@slidestage/core`,可以使用:
```bash
node scripts/pack_stage.mjs \
--src ./my-deck \
--out ./my-deck.stage \
--use-core
```
这会让 Pack 复用 Lite/Core 的 converter pipeline,减少行为漂移。
## 何时使用 `--strict-schema`
当你要发布、上传或归档正式 deck 时,建议开启:
```bash
node scripts/pack_stage.mjs \
--src ./my-deck \
--out ./my-deck.stage \
--strict-schema
```
它会使用 `@slidestage/spec` 的 Zod schema 校验最终 manifest。
## 交付报告
每次打包后,向用户报告:
- 输出路径。
- 文件大小。
- SHA-256。
- slide 数量。
- 源框架和模式。
- warnings。
不要交付未校验的 `.stage`。