@blueprint-chart/lib

中文文档
2.15.0发布于 2026/11/08MITTypeScriptES Module构建来源已验证近 30 天下载 2713

DSL驱动的图表库以D3为基础. 将图表定义为正文,在任何地方将其变成正文.

中文使用文档
文档目录10 节
  1. 安装
  2. 快开始
  3. 节点 — 将 SVG 和 PNG 写入磁盘
  4. 浏览器-挂载和步骤场景
  5. DSL 语法
  6. EBNF 概览
  7. 示例
  8. AST 节点类型
  9. 再生成解析器
  10. 颜色调色板

@ 蓝印- 图表/ lib

蓝图图的核心库——一个由DSL驱动的以D3为主的绘图引擎.

安装

npm install @blueprint-chart/lib

快开始

节点 — 将 SVG 和 PNG 写入磁盘

import { render } from '@blueprint-chart/lib'
import { writeFile } from 'node:fs/promises'

const chart = await render(bpc)
await writeFile('chart.svg', await chart.toSvg())
await writeFile('chart.png', await chart.toPng({ width: 1200 }))

浏览器-挂载和步骤场景

const { mount, scene } = await render(bpc)
mount('#chart')   // element or selector
scene(2)          // advance to scene index 2

制作图表的最简单方式是IIFE运行时间,它自动扫描嵌入式图表定义的文档,并让每个文档内出一行(在脚本标记前插入一个沙盒内):

<script src="https://unpkg.com/@blueprint-chart/lib/dist/lib/lib.iife.js"></script>

<script type="application/blueprint-chart">
  chart MyChart {
    data { values = "[[0,1],[1,4],[2,2]]" }
    series "line" { color = "steelblue" }
  }
</script>

对于一个ES模块项目中的程序用途,lib暴露了基础原始: parse (DSL —— AST), (中文(简体) ), validateChart (AST ) —— (韩语) ValidationResult 并打出错误和警告, buildChartOptions (AST-提供选择), createFrame编号 :createCanvas,和图表登记(registerChart, (中文(简体) ), getChart) (中文(简体) ). 见 标准/指数.ts 完全公开API.

DSL 语法

图表 DSL 是由 PEG 语法定义的 src/dsl/grammar.peggy 并编入 src/dsl/grammar.js 使用 佩吉。 。 。 .

EBNF 概览

Chart       = "chart" Identifier "{" ChartMember* "}"
ChartMember = DataBlock | Colorize | AreaFill | Annotation | Series | Scene | Property

DataBlock   = "data" "{" Property* "}"
Colorize    = "colorize" String "{" Property* "}"
AreaFill    = "area-fill" String String "{" Property* "}"
Annotation  = "annotation" String "{" Property* "}"
Series      = "series" String "{" Property* "}"
Scene       = "scene" String "{" SceneMember* "}"
SceneMember = DataBlock | Colorize | AreaFill | Annotation | Property

Property    = PropertyKey "=" PropertyValue
PropertyKey = String | Identifier
PropertyValue = Number "%" | Number | String | Identifier

Identifier  = [a-zA-Z_#][a-zA-Z0-9_#-]*
Number      = [0-9]+("."[0-9]+)?
String      = '"' (EscapeSequence | [^"\\])* '"'

示例

chart horizontal-bar {
  title = "Revenue by Region"
  sort = descending

  data {
    "North America" = 75%
    "Europe" = 53.85%
    "Asia" = 44%
  }

  colorize "North America" {
    color = "#e53e3e"
    label = "Leader"
  }

  scene "Focus" {
    sort = ascending
    colorize "Asia" {
      color = "#38a169"
    }
  }
}

AST 节点类型

节点字段
ChartNodechartType, (中文(简体) ), properties, (中文(简体) ), data, (中文(简体) ), colorizes, (中文(简体) ), areaFills, (中文(简体) ), annotations, (中文(简体) ), series, (中文(简体) ), scenes
PropertyNodekey, (中文(简体) ), value, (中文(简体) ), isPercentage
DataNodeentries (财产节点[])
ColorizeNodetarget, (中文(简体) ), properties
AreaFillNodefrom, (中文(简体) ), to, (中文(简体) ), properties
AnnotationNodetarget, (中文(简体) ), properties
SeriesNodename, (中文(简体) ), properties
SceneNodename, (中文(简体) ), properties, (中文(简体) ), data, (中文(简体) ), colorizes, (中文(简体) ), areaFills, (中文(简体) ), annotations

再生成解析器

生成的解析器( E)src/dsl/grammar.js) 被检查为 git ,所以下游包可以直接导入 lib 源而无需构建步骤 .

编辑后重生 grammar.peggy数字 :

pnpm --filter @blueprint-chart/lib run generate:parser

此功能也在前自动运行 build 财务报告和审定财务报表 test 通过 prebuild编号 :pretest 钩子.

颜色调色板

内置的调色板从 催眠药 由Joseph Music所收录,为数据可视化所收录的2700+彩色调色板. 根据麻省理工学院的许可.

版本与发布记录

@blueprint-chart/lib 共发布 65 个版本,首次发布于 2026/05/15;过去 12 个月发布了 65 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.15.0latest2026/11/08今天
2.14.02026/11/08今天
2.13.02026/11/08今天
2.12.02026/11/08今天
2.11.02026/11/08今天
2.10.02026/11/071 天前

关于 @blueprint-chart/lib 的常见问题

@blueprint-chart/lib 是什么?

DSL驱动的图表库以D3为基础. 将图表定义为正文,在任何地方将其变成正文.

如何安装 @blueprint-chart/lib?

在项目目录运行 npm install @blueprint-chart/lib,或使用 pnpm add / yarn add / bun add。

@blueprint-chart/lib 支持 TypeScript 吗?

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

@blueprint-chart/lib 支持 ESM 还是 CommonJS?

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

@blueprint-chart/lib 可以商用吗?

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

@blueprint-chart/lib 的下载量有多少?

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

@blueprint-chart/lib 还在维护吗?

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