bookcover-node

中文文档
0.24.0发布于 2026/11/03MIT-0TypeScriptES Module

生成印刷就绪的书籍封面。部分 封套 一代系统。

中文使用文档
文档目录4 节
  1. 看到 模式参考 这是作为参数传递的,它实际上配置了封面设计。
  2. generate(options): Promise<GenerateResult>
  3. 资产
  4. 例子

bookcover-node

生成印刷就绪的书籍封面。部分 封套 一代系统。

npm install bookcover-node

Example cover

这是书封面生成器的Node.js包装器。将文件写入临时目录; 产生的 typst CLI二进制文件,并回读编译后的输出。

需要 typst 在 $PATH.

看到 模式参考 这是作为参数传递的,它实际上配置了封面设计。

import {generate} from 'bookcover-node'

generate(options): Promise<GenerateResult>

interface GenerateOptions {
    schema: unknown              // raw schema (see above)
    input_path: string           // directory to search for background image
    output_path: string          // where to write the output file
    format?: 'pdf'|'svg'|'png'  // default: 'pdf'
    ppi?: number                 // PNG resolution, default: 144
    split?: boolean              // also write front/back/spine panel files
    pdf_pages?: boolean          // PDF: front and back pages (no spine), bleed all round
    assets_dir?: string          // root of the assets tree (see "Assets" below)
    fonts_dir?: string           // fonts tree if kept elsewhere, default: <assets_dir>/fonts
    typst_path?: string          // typst CLI binary, default: 'typst' from $PATH
    custom_fonts?: CustomFont[]  // user-uploaded font families (from typst-fonts)
    // Filename of the built-in background the image is (e.g. 'beach.jpg') — colors come from its
    // baked data, whichever copy of it is in input_path
    image_builtin?: string
}

interface GenerateResult {
    output_path: string
    split_paths?: {front: string, back: string, spine?: string}
}

资产

Typst模板被捆绑在里面 bookcover-core 本身(绑到确切的安装) 版本-不需要设置)。生成仍然需要本地字体集合,而本地字体集合不需要 在NPM包中发布。设置它一次,并将其路径传递为 assets_dir (或 fonts_dir 直接):

# Fonts — download the curated families + Noto fallbacks named by the repo's font config
curl -O https://raw.githubusercontent.com/gracious-tech/bookcover/main/font_config.json
npx typst-fonts-download --fonts assets/fonts --config font_config.json

这将产生预期的布局:

assets/
    fonts/      manifest.json, <family>/, _noto/<family>/

在 封套回购 本身 assets_dir 可以省略-它默认是回购自己的 assets/ dir。

例子

import {generate} from 'bookcover-node'

await generate({
    schema: {
        title1: 'My Book',
        author: 'Jane Doe',
        page_count: 200,
        printer: {service: 'kdp', binding_type: 'paperback', ink_type: 'bw', paper_type: 'white'},
        size_id: 'us_trade',
    },
    input_path: '.',
    output_path: './cover.pdf',
    assets_dir: './assets',
})

版本与发布记录

bookcover-node 共发布 28 个版本,首次发布于 2026/07/16;过去 12 个月发布了 28 个版本。

版本发布日期距今
0.24.0latest2026/11/03今天
0.23.02026/10/267 天前
0.22.32026/10/2311 天前
0.22.22026/10/2212 天前
0.22.12026/10/2212 天前
0.22.02026/10/2212 天前

关于 bookcover-node 的常见问题

bookcover-node 是什么?

生成印刷就绪的书籍封面。部分 封套 一代系统。

如何安装 bookcover-node?

在项目目录运行 npm install bookcover-node,或使用 pnpm add / yarn add / bun add。

bookcover-node 支持 TypeScript 吗?

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

bookcover-node 支持 ESM 还是 CommonJS?

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

bookcover-node 可以商用吗?

bookcover-node 使用 MIT-0 许可。声明的许可为 MIT-0,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

bookcover-node 还在维护吗?

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