本项目可在 Node.js 环境下使用 ECharts 的 SSR(Server-Side Rendering)能力生成 SVG 与 PNG 图片。你既可以在其他任何程序中使用命令行调用,也可以在 Node 代码中以函数方式调用。
- Node.js 16+(Windows/macOS/Linux 均可)
- 已安装依赖:
echarts
、sharp
npm i
支持通过 JSON 文件或内联 JSON 传入 ECharts option。
- 从文件读取(推荐):
node main.js --optionPath=./option.json --width=800 --height=600 --outDir=./output --outName=mychart --format=both
- 内联 JSON(PowerShell 示例):
node main.js --option='{"xAxis":{"type":"category","data":["Mon","Tue"]},"yAxis":{"type":"value"},"series":[{"type":"bar","data":[120,200]}]}' --width=800 --height=600 --format=png
- 内联 JSON(Windows CMD 示例):
node main.js --option="{\"xAxis\":{\"type\":\"category\",\"data\":[\"Mon\",\"Tue\"]},\"yAxis\":{\"type\":\"value\"},\"series\":[{\"type\":\"bar\",\"data\":[120,200]}]}" --format=svg
参数说明:
--optionPath
或--option
:二选一,ECharts option 来源--width
、--height
:画布尺寸,默认400x300
--outDir
:输出目录,默认./output
--outName
:输出文件名(不含后缀),默认chart
--format
:svg
|png
|both
,默认both
const { renderEChartToFiles, renderEChartToBuffers, renderOptionToSVG } = require('./main');
// 写文件
await renderEChartToFiles({
option, // ECharts 配置对象
width: 800,
height: 600,
formats: ['svg', 'png'],
outDir: './output',
outName: 'mychart',
});
// 获取内存 Buffer(无需落盘)
const { svg, png } = await renderEChartToBuffers({
option,
width: 800,
height: 600,
formats: ['png'],
});
// 仅获取 SVG 字符串
const svgStr = renderOptionToSVG(option, 800, 600);
项目已内置一个最小示例(柱状图):
{
"xAxis": { "type": "category", "data": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] },
"yAxis": { "type": "value" },
"series": [{ "type": "bar", "data": [120, 200, 150, 80, 70, 110, 130] }]
}
node main.js --optionPath=./option.json --format=both
MIT