File Viewer 3.0.0 的 CLI,怎么把 244 种格式拆成可安装能力

27 阅读4分钟

我维护文件预览组件这些年,最常回答的问题并不是“怎么传入文件”。大家更常卡在另一些地方:PDF 的 Worker 在开发环境没事,部署后变成 404;Office 和 CAD 的 WASM 漏了一个;内网机器装不到依赖;旧项目里同时有 Webpack 和 Vite 配置,脚本改错了入口。

组件 API 再短,也挡不住这些问题。

所以 File Viewer 3.0.0 最先重做的是安装过程。新 CLI 不只负责 npm install,它会先识别项目,再给出规划,安装后留下资源回执,最后用 doctorverify 检查结果。

File Viewer 3.0.0 CLI 页面

plan 不改文件,先回答“到底会装什么”

过去的文档通常给一张包列表。用户照着装完,才发现标准版带了不需要的格式,或者少装了对应的静态资源。

3.0.0 的 plan 会把精确版本、生成模块、静态目录、许可证提示、体积估算和安装命令一次列出来,但不修改项目:

npx file-viewer-cli@3.0.0 plan \
  --framework vue3 \
  --profile standard \
  --package-manager pnpm

以 Vue 3 的 standard 档位为例,规划结果会明确列出核心包、Vue 入口、标准预设和静态资源包。团队可以在真正安装之前判断 30.4 MB 的打包依赖、101.7 MB 的解包内容和约 24.1 MB 的静态资源是否适合当前系统。

这一步看起来保守,我反而觉得它最重要。企业项目里,可预期比“自动做得更多”更值钱。

五种能力档位对应不同的格式范围

244 个扩展名不能塞进同一袋依赖

3.0.0 的目录登记了 244 个扩展名,对应 34 条预览链路。其中 221 个属于稳定集合,另外 23 个是按需能力。

这些数字不是让业务项目全装。OA 附件中心、工程图纸系统和医疗影像页面的需要完全不同。CLI 因此提供 litestandardofficeengineeringall 等预设,也允许直接按格式选择:

npx file-viewer-cli@3.0.0 create my-viewer \
  --framework vue3 \
  --profile standard \
  --formats pdf,docx,xlsx,pptx \
  --package-manager pnpm \
  --non-interactive \
  --yes

DICOM 和数字签名容器没有被悄悄放进 all。前者目前定位为本地单文件与多帧影像预览,不声称具备 PACS、DICOMweb、MPR 或诊断用途;后者能展示容器和密码学检查结果,但证书信任、策略判断与法律效力仍由业务系统决定。

244 个扩展名被整理到 34 条预览链路

已有项目比新项目更难自动化

新建项目的输入比较干净。真实项目可能同时留下多个锁文件、旧构建脚本和几套应用入口。

执行下面的命令时,CLI 会检查框架版本、构建工具、静态目录和应用入口:

npx file-viewer-cli@3.0.0 add .

能确定唯一入口时,它会生成接入文件并安装依赖。证据不够时,它会在写文件之前停止,把需要确认的路径列出来。这里没有“聪明地猜一个”。猜错一次应用入口,通常比多问一次更难收拾。

静态资源需要所有权和回执

Worker、WASM、字体以及其他运行时文件,才是预览组件上线后最容易失踪的部分。

3.0.0 会为静态资源记录包版本、能力配置、SHA-256 和所属模块。重复安装时可以判断文件是否漂移,也能避免不同能力按安装顺序互相覆盖。普通安装只合并受管理文件;清理必须显式给出 --clean --confirm,而且目标必须是专用安全目录。

内网环境可以预先准备依赖闭包:

npx file-viewer-cli@3.0.0 prepare \
  --profile standard \
  --package-manager pnpm

准备阶段会校验 SHA-512、包名与版本,再原子写入清单。后续安装从离线目录读取;中途失败时回滚,不把项目留在“包装了一半,资源也复制了一半”的状态。

资源复制、离线安装和旧项目兼容各有独立路径

安装结束以后,再让 doctor 说话

接入完成不代表浏览器一定能渲染。3.0.0 把检查分成两层:

npx file-viewer-cli@3.0.0 doctor --json
npx file-viewer-cli@3.0.0 verify --json

doctor 适合开发时定位依赖、生成入口、资源回执和文件漂移。verify 适合 CI,发现错误会返回非零退出码。

发布前的冻结验收覆盖了 86 个发布 tarball、1 个支持 tarball和 64 份安装闭包报告,八套浏览器框架入口也实际打开页面检查过。正式发布后又按清单查询 npm,84 个发布条目都能读取对应版本和完整性信息。兼容包 msdoc-viewer 仍保持自己的 0.2.4,没有为了版本号整齐被改成 3.0.0。

我现在更愿意把文件预览看成一条交付链,而不是一个组件。组件负责渲染;CLI 负责让团队知道装了什么、资源去了哪里、出了问题怎么查。File Viewer 3.0.0 的发布记录和安装入口在 GitHub Release