# @bendyline/squisq-cli 中文文档

规范地址：https://npmcn.com/package/%40bendyline/squisq-cli/

版本：2\.9\.30
npm 元数据更新时间：2026-11-07T19:47:11.973Z
中文译文更新时间：2026-11-07T22:06:22.462Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bendyline/squisq-cli
原文对照：https://npmcn.com/package/%40bendyline/squisq-cli/?lang=original
项目主页：https://github.com/bendyline/squisq
源码仓库：https://github.com/bendyline/squisq

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：7.7 MB，18 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^22\.22\.2 \|\| ^24\.15\.0 \|\| \>=26\.0\.0
- 运行依赖：5 个
- 首次发布：2026-03-26T04:22:46.866Z
- 最新版本发布：2026-11-07T19:47:11.660Z
- 近 30 天下载量：7188（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：91（近 12 个月 91 个）

## 中文简介

Squisq CLI ——转换文档并渲染出MP4视频或动画 GIF

## 安装

```sh
npm install @bendyline/squisq-cli
```

也可以使用：`pnpm add @bendyline/squisq-cli`、`yarn add @bendyline/squisq-cli`、`bun add @bendyline/squisq-cli`

## README

# @bendyline/squisq-cli (英语)

在DOCX,PPTX,PDF,XLSX,CSV,HTML,EPUB,Markdown,和容器ZIP之间转换Squisq文档的命令行工具和程序API——并把它们渲染为MP4视频或动画GIF. 读取 Markdown 二进制文档(`.docx`编号 :`.pptx`编号 :`.pdf`编号 :`.xlsx`编号 :`.csv`编号 :`.html`页:1`.dbk` 容器、文件夹或预建的 Doc JSON作为输入.

部分 [斯奎斯克语Name](https://github.com/bendyline/squisq) 单相机.

[![npm](https://img.shields.io/npm/v/@bendyline/squisq-cli)](https://www.npmjs.com/package/@bendyline/squisq-cli) [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/bendyline/squisq/blob/main/LICENSE)

## 安装

```bash
npm install -g @bendyline/squisq-cli
```

对于 `squisq video` (和 `convert` 改为 `mp4` 或者说 `gif`您还需要:

-   ffmpeg — 解决于 `SQUISQ_FFMPEG` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}然后是你们的 `PATH` (单位:千美元)`brew install ffmpeg` 编号 : `apt install ffmpeg` 编号 : `winget install ffmpeg`),然后可选安装 `ffmpeg-static` 软件包.
-   一个由 Playwright 管理的 Chromium 用于无头帧捕获(例如. `npx playwright install chromium`(中文(简体) )

运行 `squisq doctor` 检查视频工具链。 文档转换为非视频格式没有本地要求.

## 图标

### `squisq convert <input>`

将文档转换为一个或多个格式。 输入可以是Markdown或二进制文档(`.docx`, (中文(简体) ), `.pptx`, (中文(简体) ), `.pdf`, (中文(简体) ), `.xlsx`, (中文(简体) ), `.csv`, (中文(简体) ), `.html`页:1 `.zip`编号 :`.dbk` 容器,或文件夹。 转换通过斯奎斯克 `MarkdownDocument` 支点模型并保存了文档的大部分口味(结构,格式化,表格,图像)——它并不是一回无所失.

```bash
squisq convert input.md -o report.docx           # single file; format inferred from extension
squisq convert report.docx -o report.md           # binary input → markdown
squisq convert input.md --formats pptx             # single format to the default output dir
squisq convert input.md --formats docx,pptx,pdf    # multiple formats
squisq convert project.dbk --output-dir ./out --formats html,docx
squisq convert input.md --theme cinematic --transform magazine --formats pptx
```

| 选项 | 说明 | 默认 |
| --- | --- | --- |
| `-o, --output <file>` | **单身** 输出文件; 从扩展名中推断出的格式( 无法与 `--formats`(中文(简体) ) | —— 说 |
| `-d, --output-dir` | 输出目录(多格式模式) | 与输入相同 |
| `-f, --formats` | 逗号分隔 : `docx`, (中文(简体) ), `pptx`, (中文(简体) ), `pdf`, (中文(简体) ), `html`, (中文(简体) ), `htmlzip`, (中文(简体) ), `epub`, (中文(简体) ), `dbk`, (中文(简体) ), `md`, (中文(简体) ), `xlsx`, (中文(简体) ), `csv`, (中文(简体) ), `mp4`, (中文(简体) ), `gif` | 默认集 |
| `--overwrite` | 替换现有的输出文件( 否则运行拒绝并退出非零) | 关 |
| `-t, --theme` | Squisq主题 id — 内置或自定义主题在 doc的前题中包含 | 无 |
| `--transform` | 导出前应用了变形样式( 如 . `documentary`, (中文(简体) ), `magazine`, (中文(简体) ), `minimal`(中文(简体) ) | 无 |
| `--no-auto-templates` | 禁用未加说明的标题自动选择内容意识模板 | (自动起动) |

> **v1.5 打破旗帜更改 :** `-o` 现在是一个 **单文件** 目的地(从扩展中推断出格式)。 旧的 `-o` 产出 -**目录** 行为就是现在 `-d, --output-dir`。一个赤裸的 `convert <input>` 没有 `-o`编号 :`--formats` 写入故意排除的默认集 `md`编号 :`xlsx`编号 :`csv`编号 :`mp4`编号 :`gif`。 。 。 .

注释:

-   **现有文件从未默认被覆盖 .** 一个赤裸的 `convert report.md` 输入旁边写好几个文件; 如果已有任何文件存在, 运行会拒绝在前面( 在转换任何文件之前) 并退出 1 。 过 `--overwrite` 来代替他们 旗帜是 `--overwrite`没有 `-f`,因为 `-f` 实值 `--formats`。没有提示——这仍然可以写.
-   **一个未知 `--formats` id是一个很难的错误.** `-f docx,pfd` 失败 `Unknown format: "pfd" (did you mean "pdf"?)` 并且没有产生任何东西, 而不是警告和退出 0 与PDF 无声缺失.
-   `html` 与独立玩家内置(静态模式)一起生成单个自成一体文件; `htmlzip` 生成一个 `<name>.html.zip` 带有外部资产和可选音频的归档.
-   `epub` 嵌入来自输入容器的图像,当doc有叙述段时,生成EPUB 3 Media Overlay.
-   `xlsx` 导出为只使用表格; `csv` 导出第一个表格; `mp4` 财务报告和审定财务报表 `gif` 要求渲染工具链(见安装).
-   `dbk` 将输入容器重新序列化为ZIP.

### `squisq video <input> [output]`

将文档渲染为 MP4 或动画 GIF 。 Playwright从一个无头玩家的页面中捕捉到决定性的帧;本地的ffmpeg为MP4编码了H.264+AAC或为GIF生成的全局调色板. 有美人鱼栅栏的文档会自动使用完整的独立播放器,因此图被捕获;其他文档会保留更小的光线播放器. GIF没有音频音轨.

```bash
squisq video input.md output.mp4
squisq video input.md output.gif
squisq video input.md --format gif --no-animations
squisq video project.dbk --quality high --fps 30
squisq video ./my-folder --orientation portrait --captions social
squisq video input.md -t documentary --transform magazine --cover-preroll 1.5
squisq video doc.json -o out.mp4
```

| 选项 | 说明 | 默认 |
| --- | --- | --- |
| `-o, --output` | 产出 `.mp4` 或者说 `.gif` 路径; 扩展名选择格式 | `<input>.mp4` |
| `--format` | `mp4` 或者说 `gif` | 推断,其他 `mp4` |
| `--fps` | 每秒框架(MP4 1-120;GIF 1-100) | MP4 30; 全球投资框架 10 |
| `--quality` | MP4 仅限质量 : `draft`, (中文(简体) ), `normal`,或 `high` | 常规 |
| `--orientation` | `landscape` 或者说 `portrait` | 景观 |
| `--captions` | `off`, (中文(简体) ), `standard`,或 `social` | MP4 关闭; GIF 标准 |
| `--animations` 编号 : `--no-animations` | 启用/ 禁用层动画和块过渡 | MP4 已启用; GIF 已禁用 |
| `--loop` | GIF 重复计数 (`0` 永远, `-1` 无循环) | 0 个 |
| `--max-colors` | GIF 调色板大小, 2-256 | 256号 |
| `--dither` | GIF 抖动 : `bayer`, (中文(简体) ), `sierra2_4a`,或 `none` | `sierra2_4a` |
| `--bayer-scale` | 订购拜耳力,0-5 | 3个 |
| `-t, --theme` | 要应用的 Squisq 主题 id | 无 |
| `--motion` | 运动简介 : `calm`, (中文(简体) ), `documentary` 或者说 `vibrant` | 医生,然后主题 |
| `--transform` | 渲染前要应用的变形样式 | 无 |
| `--cover-preroll` | 故事开始前的封面预卷 | 2个 |
| `--width` 编号 : `--height` | 维度在像素中覆盖—— **一定扯平了 绝对扯平了** | MP4 1080p; GIF 960x540 (英语) |
| `--overwrite` | 替换现有的输出文件( 否则拒绝并退出非零) | 关 |
| `--no-auto-templates` | 禁用未加说明的标题自动选择内容意识模板 | (自动起动) |
| `--frame-transport` | MP4 框架交付 : `pipe` (流静至ffmpeg)或 `memory` | `pipe` |
| `--capture-format` | MP4 仍为每帧捕获 : `png` 或者说 `jpeg` (仅管子) | 高级 `png`,则 `jpeg` |
| `--frames-dir` | MP4 仅限: 将每个被俘者都拼凑到这里, 运行后保留它 | 无 |
| `--resume` | 只使用 MP4 : 重复使用仍为相同的配置 `--frames-dir` | 关 |

注释:

-   **尺寸必须均匀.** `--width 851` 被立即拒绝——在读取文档或浏览器启动之前 `Video width must be an even number of pixels (got 851) … Use 850 or 852.` 奇数被否定,而不是四舍五入,所以一个从未按你没有要求的大小默默无声的船体。 该规则对MP4和GIF相同,并匹配浏览器导出.
-   **已存在的输出文件从未默认被覆盖 .** 检查在渲染前会运行,所以相撞路径需要你花一秒钟,而不是完全捕获. 过 `--overwrite` 替换.
-   FFmpeg 失败报告一条相关的行(例如:. `[libx264] width not divisible by 2 (851x480) (exit code 1)`)而不是倾倒整个命令行和stderr缓冲.
-   **MP4在被捕获时将流帧为ffmpeg.** 对于任何长度的故事,记忆都保持平平; `--frame-transport memory` 恢复旧的保留-when-en-encode路径,该路径被限定为几秒1080p相片幻灯片. `--frames-dir` 保持每个平稳(加a) `manifest.json` 命名文档、大小、速率、标题和动画设置),以及 `--resume` 跳过重新抓取的静态, 即一个相同的渲染物已经在那里拼接了 .
-   **外观和自定义的尺寸由本地构成.** 渲染页将玩家的取景口钉入导出大小;玩家捆绑会忽略它在抓取前的运行失败,而不会产生字母框的地貌布局.

### `squisq image <input> [output]`

将文档渲染为 **盘子** 引渡——按一个街区排列 画布——到PNG图像. 仅需要 Playwright Chromium( 无 ffmpeg; 这是一个 单帧捕捉,不是视频编码. 排版来自医生 `squisq-dashboard-layout` 前题(或 `--layout`),默认为 自动选取,选择符合区块计数的最小内置布局; 文档标题带默认生成 `--no-title` 藏来. `--style` 选择单元格敷料(`basic`, (中文(简体) ), `card`, (中文(简体) ), `panel`, (中文(简体) ), `accent` ——出自所有主题),, 默认到医生的 `squisq-dashboard-style`。 。 。 .

```bash
squisq image input.md output.png
squisq image input.md --resolution 4k
squisq image input.md --resolution square --layout grid-2x2
squisq image input.md --style card
squisq image input.md --width 1280 --height 720 --no-title
squisq image input.md -t documentary --transform magazine
```

| 选项 | 说明 | 默认 |
| --- | --- | --- |
| `-o, --output` | 产出 `.png` 路径 | `<input>.png` |
| `--resolution` | 已命名预设 : `hd`, (中文(简体) ), `fhd`, (中文(简体) ), `4k`, (中文(简体) ), `square`, (中文(简体) ), `square-2k`, (中文(简体) ), `portrait`, (中文(简体) ), `portrait-4k`, (中文(简体) ), `standard` | `fhd` |
| `--width` 编号 : `--height` | 自定义像素( 两者需要一起; 排除) `--resolution`. 64–7680 每轴, \\\\ 33 MP; 奇数精细 | 预设 |
| `--layout` | Dashboard 布局 ID( 内置或 doc 自定义布局), 或 `auto` | `auto` |
| `--style` | 单元格样式变体 : `basic`, (中文(简体) ), `card`, (中文(简体) ), `panel`, (中文(简体) ), `accent` (所有主题来源) | 文档设置 |
| `--title` 编号 : `--no-title` | 显示/隐藏文档标题带 | 显示 |
| `--format` | 产出格式`png`(中文(简体) ) | `png` |
| `-t, --theme` | 要应用的 Squisq 主题 id | 无 |
| `--transform` | 渲染前要应用的变形样式 | 无 |
| `--overwrite` | 替换现有的输出文件( 否则拒绝并退出非零) | 关 |
| `--no-auto-templates` | 禁用未加说明的标题自动选择内容意识模板 | (自动起动) |

可通过登记册获取的同为 `squisq convert <input> -f png`。 。 。 .

### `squisq doctor`

预飞渲染工具链:报告已解析的ffmpeg路径,版本,以及它来自哪个来源(`SQUISQ_FFMPEG` 内置/ `PATH` 编号 : `ffmpeg-static`)在缺失时带有安装提示,尝试进行无头铬发射,报告节点版本,并总结每个地貌准备(video/GIF需要ffmpeg + Chromium;仪表板PNG图像仅需要Chromium).

```bash
squisq doctor
```

### `squisq validate <input>`

结构验证a `.md` 文档, `.zip`编号 :`.dbk` 或文件夹。 报告未知的模板( 带有 DO- you- 意思) , 未解析 `{[…]}` 注解,标题属性不正确,连接未解决,id重复,数据栅栏差,以及缺少资产引用——有行号.

```bash
squisq validate input.md
squisq validate project.dbk --json
squisq validate ./my-folder --strict
```

| 选项 | 说明 |
| --- | --- |
| `--json` | 将诊断作为机器可读的JSON |
| `--strict` | 警告时也退出非零 |

诊断报告在三个断层 `error`, (中文(简体) ), `warning`,以及 `info` (信息分别计算并显示). 退出代码取决于 **错误** 仅限: `0` 清洁、只警告或只信息; `1` 错误(或任何警告) `--strict`(三); `2` 输入不可读.

### `squisq transform <input>`

这个 `condense` 操作压缩表和装饰分页符,同时 保留表格数据、对齐、代码、引用和归属。 它验证 返回前的结构等同。 组合操作时,设置 `condense` 之后 `cleanup` 因此序列化不会重新引入活塞.

一次性降分 **来源** 转换为 a `.md` 文件,按给定的顺序 : `unwrap` (删除强制行包接,使每个段落都是一行——坚硬的断开), `wrap` (硬包装段落在字段-代码、表格和标题上未调整的栏宽),和 `cleanup` (宫殿式规范化:子弹、重点、标题、平板、间距、说明和保留前题)。 不要被混淆 与 `--transform <style>` 打开幻灯片样式的旗帜 `convert`编号 :`video` ——此命令重写下标文本本身.

变换的标记降值默认为 stdout(状态消息为 stderr,因此管道干净).

```bash
squisq transform doc.md --ops unwrap
squisq transform doc.md --ops unwrap,cleanup > cleaned.md
squisq transform doc.md --ops wrap --width 100 --in-place
squisq transform doc.md --ops cleanup -o cleaned.md
squisq transform doc.md --ops condense -o compact.md
```

| 选项 | 说明 |
| --- | --- |
| `--ops <list>` | 按顺序应用的逗号分离变换(`unwrap`, (中文(简体) ), `wrap`, (中文(简体) ), `cleanup`(中文(简体) ) |
| `--width <n>` | 列宽 `wrap` (20-500,默认为80) |
| `-o <file>` | 将结果写入文件( 重写以覆盖不包含 `--overwrite`(中文(简体) ) |
| `--in-place` | 重写输入文件( 与 `-o`(中文(简体) ) |
| `--overwrite` | 允许 `-o` 以替换已有文件 |

变形在严格模式下运行:每个变形器重排输出,并与输入文档进行结构对比;如果等同性无法被证明,命令会退出 `1` 而不排放任何东西。 退出代码 : `0` 成功吗, `1` 变换/输出失败, `2` 输入不可读.

## 输入格式

所有命令接受 :

| 投入 | 说明 |
| --- | --- |
| `.md` 文件 | 普通 Markdown 文件 |
| 二进制文件 | `.docx`, (中文(简体) ), `.pptx`, (中文(简体) ), `.pdf`, (中文(简体) ), `.xlsx`, (中文(简体) ), `.csv`, (中文(简体) ), `.html` (单位:千美元)`convert`(中文(简体) ) |
| `.zip`编号 :`.dbk` | 带有文档 + 嵌入式介质的容器归档 |
| 文件夹 | 有 Markdown 文件和相关媒体文件的目录 |
| `.json` 文件 | 预建的JSON医生`video` 仅限) |

## 程序化 API

导入 `@bendyline/squisq-cli/api` - 使用与Node.js图书馆相同的管道——不需要外壳。 像CLI一样, `renderDocToMp4` 财务报告和审定财务报表 `renderDocToGif` 需要ffmpeg和一个由 Playwright 管理的铬.

### `convert()`

预装包装 `@bendyline/squisq-formats`' `convert()` 输入 CLI 格式登记册(每个内置导出方加只输入 CLI) `mp4` 财务报告和审定财务报表 `gif` 格式)和默认 `resolvePlayerScript` (所以HTML/玩家-嵌入式输出在框外有效). 两者均可通过 `options`。 。 。 . `createCliRegistry()` 返回同一登记册供直接使用.

```ts
import { convert, createCliRegistry, ConversionError } from '@bendyline/squisq-cli/api';

const result = await convert({ kind: 'markdown', markdown: '# Hello' }, 'docx');
// result.bytes (Uint8Array), result.mimeType, result.suggestedFilename, result.warnings
```

`ConversionError` (有一个稳定 `code`)和 `ConvertSource` 编号 : `ConvertOptions` 编号 : `ConversionResult` 编号 : `FormatRegistry` 类型为方便再出口.

### `renderDocToMp4`

```ts
import { renderDocToMp4, readInput } from '@bendyline/squisq-cli/api';

// Load a document from disk (.md, .zip/.dbk, folder, or Doc .json)
const input = await readInput('./my-article.md');

// `doc` is always normalized and ready to render. `markdownDoc` is present
// only when the source was markdown-shaped; `sourceFormat` identifies the input.
const { doc, container, markdownDoc, sourceFormat } = input;

// Render to MP4
const result = await renderDocToMp4(doc, container, {
  outputPath: './output.mp4',
  fps: 30, // default 30
  quality: 'high', // 'draft' | 'normal' | 'high' (default 'normal')
  orientation: 'landscape', // 'landscape' | 'portrait' (default 'landscape')
  captionStyle: 'social', // 'off' | 'standard' | 'social' (default 'off')
  animationsEnabled: false, // static slide changes; media/timing remain active
  coverPreRoll: 2, // seconds of cover-slide pre-roll (default 0)
  frameTransport: 'pipe', // 'pipe' (default; streams stills to ffmpeg) | 'memory'
  captureFormat: 'png', // 'png' | 'jpeg' (default: png for high quality, jpeg otherwise)
  framesDir: './frames', // optional: keep every still + manifest; with resume: true, reuse them
  onFrame: ({ index, totalFrames, captureMs, reused }) => {}, // per-frame throughput hook
  onProgress: (phase, pct) => console.log(`${phase}: ${pct}%`),
});
// result: { duration, frameCount, outputPath, reusedFrameCount?, framesDir? }

console.log(`Rendered ${result.frameCount} frames (${result.duration}s) → ${result.outputPath}`);
```

容器的音频部分成为了MP4的音频轨道;在道克中发现的定时媒体剪辑和块块视频被嵌入并混入其预定位置.

抓取页面没有从网络上装入任何内容, 因此一个主题字体是渲染 机器缺乏( Google 字体堆栈, 如 war- earth ) `DM Sans` 机构) 变回倒地 通过字体文件为 `fonts`每个文件一个条目; 这里的每个渲染器(MP4,GIF,封面和仪表板PNG)都接受:

```ts
const fonts: RenderFontFace[] = [
  { family: 'DM Sans', data: await readFile('DMSans-Variable.woff2'), weight: '100 1000' },
  {
    family: 'DM Sans',
    data: await readFile('DMSans-VariableItalic.woff2'),
    weight: '100 1000',
    style: 'italic',
  },
];
await renderDocToMp4(doc, container, { outputPath: './output.mp4', fonts });
```

`format` 默认为 `'woff2'` (另见: `'woff'`, (中文(简体) ), `'truetype'`, (中文(简体) ), `'opentype'`),以及 `unicodeRange` 使用 CSS 软件 `unicode-range` 用于保存一个子集的文件.

### `renderDocToGif`

```ts
import { renderDocToGif } from '@bendyline/squisq-cli/api';

const result = await renderDocToGif(doc, input.container, {
  outputPath: './output.gif',
  fps: 10,
  captionStyle: 'off', // override the default 'standard' captions
  animationsEnabled: false,
  maxColors: 256,
  loop: 0,
});
```

GIF 默认为 960x540 地貌 (540x960 肖像), 10 fps, 标准 标题、无限回路和禁用幻灯片动画/过渡。 设定 `captionStyle: 'off'` 来省略标题。 嵌入式视频仍然进步,但全部 音频被省略并通过报告 `result.warnings`。 。 。 .

### `renderDocToDashboardPng`

```ts
import { renderDocToDashboardPng } from '@bendyline/squisq-cli/api';

const result = await renderDocToDashboardPng(doc, input.container, {
  outputPath: './dashboard.png',
  resolution: 'square', // or width/height for custom pixels
  layout: 'grid-2x2', // 'auto' (default) picks by block count
  style: 'card', // 'basic' (default) | 'card' | 'panel' | 'accent'
  title: true,
});
// result: { bytes: Uint8Array, width, height, outputPath? }
```

把Dashboard递解给一个PNG 需要 Playwright 铬 - 没有ffmpeg. `resolution` 名称预设从 `DASHBOARD_RESOLUTIONS` (默认) `fhd`,1920×1080;明确 `width`编号 :`height` (两者一起)替换 这个 上游应用主题( E)`{ ...doc, themeId }`公约》第2条) 视频渲染器使用.

### 原生框架编码

对于已经拥有PNG帧而不需要Playwright捕获的呼叫者, aPI直接暴露出原生的FFmpeg层:

```ts
import { framesToGifNativeBytes, framesToMp4NativeBytes } from '@bendyline/squisq-cli/api';

const mp4 = await framesToMp4NativeBytes('/usr/bin/ffmpeg', pngFrames, audioBytes, {
  fps: 30,
  quality: 'high',
});

const gif = await framesToGifNativeBytes('/usr/bin/ffmpeg', pngFrames, {
  fps: 10,
  width: 960,
  height: 540,
});
```

路径变体写入呼叫器提供输出; 每个 `Bytes` 变量返回 (单位:千美元) `Uint8Array`。MP4 垫片带有静默的简短音频,因此无法截取 时间轴 GIF 使用方便压缩的 diff 调色板和已更改的矩形 应用.

### `extractThumbnails`

JPEG 缩略图 :

```ts
import { extractThumbnails } from '@bendyline/squisq-cli/api';

await extractThumbnails({
  videoPath: './output.mp4',
  outputDir: './thumbs',
  slug: 'my-article', // filenames: {slug}-{width}x{height}.jpg
  sizes: [
    { name: 'og', width: 1200, height: 630, filter: 'scale=1200:630' },
    { name: 'thumb', width: 480, height: 270, filter: 'scale=480:270' },
  ],
  force: false, // overwrite existing files (default false)
});
```

### 其他出口

-   `readInput(inputPath)` → `{ doc: Doc, container: ContentContainer, markdownDoc?: MarkdownDocument, sourceFormat: FormatId }`
-   `MemoryContentContainer` (从 `@bendyline/squisq/storage`(中文(简体) )
-   `VideoQuality`, (中文(简体) ), `VideoOrientation` 类型(从 `@bendyline/squisq-video`(中文(简体) )
-   `DASHBOARD_RESOLUTIONS`, (中文(简体) ), `DEFAULT_DASHBOARD_RESOLUTION`, (中文(简体) ), `resolveDashboardDimensions`, (中文(简体) ), `validateDashboardImageDimensions` (从 `@bendyline/squisq-video`(中文(简体) )

见全 [API 参考](https://github.com/bendyline/squisq/blob/main/docs/API.md#bendylinesquisq-cli) 所有类型和选项.

## 相关软件包

| 软件包 | 说明 |
| --- | --- |
| [@bendyline/squisq (英语)](https://www.npmjs.com/package/@bendyline/squisq) | 无头核心——计划,模板,下标 |
| [@bendyline/squisq-formats (中文(简体) )](https://www.npmjs.com/package/@bendyline/squisq-formats) | DOCX/PDF/HTML/EPUB/PPTX转换器(由 `convert`(中文(简体) ) |
| [@bendyline/squisq-视频](https://www.npmjs.com/package/@bendyline/squisq-video) | 无头视频渲染基础(由 `video`(中文(简体) ) |
| [@bendyline/squisq-反应](https://www.npmjs.com/package/@bendyline/squisq-react) | 反应组件 + 独立播放器捆绑 |

## 许可证

[麻省理工学院](https://github.com/bendyline/squisq/blob/main/LICENSE)

## 常见问题

### @bendyline/squisq-cli 是什么？

Squisq CLI ——转换文档并渲染出MP4视频或动画 GIF

### 如何安装 @bendyline/squisq-cli？

在项目目录运行 npm install @bendyline/squisq-cli，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 squisq，可以用 npx squisq 直接运行。

### @bendyline/squisq-cli 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @bendyline/squisq-cli 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @bendyline/squisq-cli 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^22\.22\.2 \|\| ^24\.15\.0 \|\| \>=26\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @bendyline/squisq-cli 可以商用吗？

@bendyline/squisq-cli 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @bendyline/squisq-cli 的下载量有多少？

根据 npm 官方下载统计，@bendyline/squisq-cli 在 2026/10/08 – 2026/11/06 这 30 天内被下载 7,188 次，日均约 240 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @bendyline/squisq-cli 还在维护吗？

最新版本 2\.9\.30 发布于 2026/11/08（今天）；至今共发布 91 个版本，其中过去 12 个月发布了 91 个；首次发布于 2026/03/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

