# CLI 使用说明 TTRPG Tools 提供一个 CLI 工具,用于将目录内的各种 TTRPG 文档编译为 HTML。 ## 安装 ```bash # 克隆仓库后安装依赖 npm install # 全局链接 CLI 工具 npm link ``` 安装完成后,可在任意目录使用 `ttrpg` 命令。 ## 命令 CLI 使用子命令组织: ### serve - 预览模式 运行一个 Web 服务器预览目录中的内容,并实时监听文件更新。 ```bash ttrpg serve [dir] -p 3000 ``` **参数:** | 参数 | 说明 | 默认值 | |------|------|--------| | `[dir]` | 要预览的目录 | `.` (当前目录) | **选项:** | 选项 | 说明 | 默认值 | |------|------|--------| | `-p, --port ` | 端口号 | `3000` | | `-h, --host ` | 主机地址 | `0.0.0.0` | **功能:** - 扫描目录下的所有 `.md`、`.csv`、`.yarn` 文件 - 为每个文件创建路由 - 提供实时文件监听,修改后自动刷新 - 通过 `/__CONTENT_INDEX.json` 提供文件索引 **示例:** ```bash # 预览当前目录 ttrpg serve # 预览指定目录 ttrpg serve ./my-ttrpg-content # 指定端口 ttrpg serve ./docs -p 8080 ``` ### compile - 编译模式 将目录中的内容输出为带 hash 路由、单个 HTML 入口的 Web 应用。 ```bash ttrpg compile [dir] -o ./dist/output ``` **参数:** | 参数 | 说明 | 默认值 | |------|------|--------| | `[dir]` | 要编译的目录 | `.` (当前目录) | **选项:** | 选项 | 说明 | 默认值 | |------|------|--------| | `-o, --output ` | 输出目录 | `./dist/output` | **功能:** - 扫描目录下的所有 `.md` 文件 - 解析 Markdown 并生成路由 - 打包为带 hash 路由的单个 HTML 入口 - 复制引用的资源文件(图片、CSV 等) **示例:** ```bash # 编译当前目录 ttrpg compile # 编译指定目录并输出到指定位置 ttrpg compile ./content -o ./build # 编译并部署 ttrpg compile ./docs -o ./public && npm run preview ``` ## 输入文件 CLI 会搜索目录下的以下文件: - `.md` - Markdown 文档 - `.csv` - 表格数据 - `.yarn` - Yarn Spinner 叙事文件 ### 文件组织建议 ``` my-ttrpg-content/ ├── index.md # 首页 ├── rules/ │ ├── index.md # 规则首页 │ ├── combat.md # 战斗规则 │ └── magic.md # 魔法系统 ├── characters/ │ ├── index.md │ └── npc-list.csv # NPC 列表 └── assets/ ├── images/ # 图片资源 └── icons/ # 图标资源 ``` ### 相对路径引用 若 Markdown 文件通过相对路径引用了其他文件(如图片、CSV),CLI 会在打包时自动处理这些引用: ```markdown :table[./sparks.csv] ![地图](./maps/city-map.png) :deck[../data/cards.csv] ``` ## 开发服务器特性 ### 实时索引 访问 `http://localhost:3000/__CONTENT_INDEX.json` 可获取当前内容目录的文件索引。 ### 自动刷新 文件变化时,服务器会自动重新加载内容,无需手动刷新页面。 ### SPA 路由 使用 hash 路由支持单页应用导航: - `/content/rules/combat.md` → `#/content/rules/combat.md` - 支持浏览器前进/后退 ## 常见问题 ### 端口被占用 ```bash # 使用其他端口 ttrpg serve -p 8080 ``` ### 编译输出为空 检查输入目录是否包含 `.md` 文件: ```bash # 查看目录内容 ls -R ./content # 重新编译 ttrpg compile ./content -o ./dist/output ```