@foxycape/core

中文文档
1.3.1发布于 2026/11/15MITTypeScriptESM + CJS近 30 天下载 2049

Browser-side multi-format reader kernel with pluggable parsers, renderers, services, and plugins.

原始使用文档
文档目录14 节
  1. 概述
  2. 安装
  3. 特点
  4. 统一打开管线
  5. 可扩展媒体类型
  6. 服务注入
  7. 插件系统
  8. 生命周期与事件
  9. 标注契约
  10. 导航与主题
  11. 架构
  12. 快速开始
  13. 开发
  14. 开源协议
Foxycape Core

Foxycape Core

浏览器端多格式阅读器内核:统一 Reader API,通过可插拔解析器/渲染器、服务与插件承载 PDF、HTML 等格式。

English | 中文

概述

Foxycape Core(@foxycape/core)是可嵌入自有应用的浏览器阅读器运行时。

  • 包含:kernal/ 下的内核,以及 mediaTypes/html、mediaTypes/pdf 媒体实现。
  • 不包含:应用级 chrome 或产品专用 UI——这些由宿主自行实现。

公开 API barrel:kernal/index.ts(也可用 @foxycape/core / @foxycape/core/kernal)。媒体实现按路径导入(例如 @foxycape/core/mediaTypes/pdf/...)。

安装

npm install @foxycape/core
import { Options, Reader } from '@foxycape/core'
import { PdfRenderer } from '@foxycape/core/mediaTypes/pdf/renderer/PdfRenderer'

打包或发布前请先构建:

npm run build

特点

统一打开管线

用 Options 配置,再通过 Reader.open(source, container, root, openOptions?) 打开文档。无需 DOM 宿主的纯解析 / 无头场景,使用 FileLoader。

可扩展媒体类型

通过 MediaTypeRegistry 注册格式支持:

reader.mediaTypeRegistry.register(
  ['.pdf'],
  async (url, extension) => /* FileParser */,
  async (owner, fileParser, el) => /* Renderer */,
)

PDF 与 HTML 的解析器/渲染器位于 mediaTypes/。注册方式见 samples/。

服务注入

ServiceCollection 允许宿主替换横切服务,例如 HTTP、存储、加载 UI、通知、主题与壁纸提供者:

reader.services.add('themeProvider', () => new HostThemeProvider())

插件系统

用 PluginCore 扩展交互与行为,经 PluginRegistry 全局注册,再由 PluginManager 按扩展名 / 语言 / 版本在每个 Reader 实例上启用。

生命周期与事件

可在加载与渲染阶段挂接 hooks(onInitialize、onFileParsed、onRenderer / onRenderered、dispose 系列等)。通过 EventNames 订阅页码变化、进度、密码请求、主题变化等阅读器事件。

标注契约

kernal/mark 定义 IMarker、Mark、MarkType、ContentRange。Core 提供契约与共享几何工具;具体标注引擎通常由宿主实现。

导航与主题

分页、目录/导航点、阅读进度,以及主题/样式提供者接口,让布局与 chrome 可由宿主替换,而无需分叉内核。

架构

.
├── kernal/        # Reader、FileLoader、服务、插件、标注契约
├── mediaTypes/    # base / html / pdf 解析器与渲染器
├── samples/       # Vite demo(HTML & PDF)
├── tests/         # Vitest
└── pdfjs/         # 本地 vendored PDF.js(相对路径引用)
flowchart LR
  Host[Host app] --> Options[Options]
  Options --> Reader[Reader]
  Reader --> Registry[MediaTypeRegistry]
  Registry --> Parser[FileParser]
  Registry --> Renderer[Renderer]
  Reader --> Services[ServiceCollection]
  Reader --> Plugins[PluginManager]
  Reader --> Events[EventEmitter]

典型宿主流程:

  1. new Options() → new Reader(options)
  2. 注册媒体类型(以及可选的服务 / 插件 / 生命周期 hooks)
  3. await reader.open(...)

快速开始

在包根目录下:

npm install
npm run sample:pdf
# 或
npm run sample:html

最小集成示意(完整示例见 samples/pdf/main.ts):

import { Options, Reader } from '@foxycape/core'
// registerPdfMediaType(reader) — 见 samples/pdf/registerPdfMediaType.ts

const options = new Options()

const reader = new Reader(options)
// registerPdfMediaType(reader)

await reader.open(source, container, root, {
  extension: '.pdf',
  fileName: 'a.pdf',
})

开发

脚本作用
npm run buildVite 库构建 → dist
npm run test运行 Vitest
npm run test:watchVitest watch
npm run sample:htmlHTML 阅读器 demo
npm run sample:pdfPDF 阅读器 demo

PDF.js 以源码形式放在 pdfjs/,由 mediaTypes/pdf/** 通过相对路径引用。库构建会复制到 dist/pdfjs;发布到 npm 时只包含 dist/(含 dist/pdfjs),不包含源码树中的 pdfjs/ 目录。

开源协议

Foxycape Core 采用 MIT 开源协议。

本包内嵌了 PDF.js(构建后位于 dist/pdfjs),其许可证为 Apache License 2.0。详见发布包中的 dist/pdfjs/LICENSE(源码树中为 pdfjs/LICENSE)。

版本与发布记录

@foxycape/core 共发布 17 个版本,首次发布于 2026/08/10;过去 12 个月发布了 17 个版本。

版本发布日期距今
1.3.1latest2026/11/15今天
1.3.02026/11/15今天
1.2.92026/11/132 天前
1.2.82026/11/123 天前
1.2.72026/11/114 天前
1.2.62026/11/105 天前

关于 @foxycape/core 的常见问题

@foxycape/core 是什么?

Browser-side multi-format reader kernel with pluggable parsers, renderers, services, and plugins.

如何安装 @foxycape/core?

在项目目录运行 npm install @foxycape/core,或使用 pnpm add / yarn add / bun add。

@foxycape/core 支持 TypeScript 吗?

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

@foxycape/core 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@foxycape/core 可以商用吗?

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

@foxycape/core 的下载量有多少?

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

@foxycape/core 还在维护吗?

最新版本 1.3.1 发布于 2026/11/15(今天);至今共发布 17 个版本,其中过去 12 个月发布了 17 个;首次发布于 2026/08/10。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。