@danielsimonjr/sciengjs

中文文档
1.0.8发布于 2026/11/07MITTypeScriptES Module近 30 天下载 4846

用于科学和工程图、文件和模型的本地渲染引擎

中文使用文档
文档目录17 节
  1. 这个发布会做什么
  2. 安装
  3. 快开始
  4. 检查这台机器能产生什么
  5. 错误
  6. 配置
  7. 阶段子路径
  8. 美人鱼
  9. 数学
  10. 绘图
  11. 控制助手
  12. 治疗中心
  13. 符号ML
  14. 路线图
  15. 代理设备的使用
  16. 发展
  17. 许可证

剪辑

用于科学和工程图的本地渲染引擎,以TypeScript为单位.

npm CI licence: MIT

sciengjs将图源转换成你自己机器上的图像. 它不会向网络服务发送任何来源. 每个渲染器都运行在工人线程中,有时间限制和内存限制,因此不良输入不能被挂起或崩溃呼叫器.

这个发布会做什么

0.9.0版本有10种输入类型. 他们是 图维兹 DOT, (中文(简体) ), 美人鱼 (每个图表类型)和 LaTeX 数学 (改为SVG,PNG和PDF). 其中包括: 拼图 (改为SVG、PNG和HTML)和 HTML 语言 (致巴布亚新几内亚,PDF和Markdown). CAD 文件 步骤, (中文(简体) ), 事业单位 财务报告和审定财务报表 溴化二苯醚 转到GLB、HTML中的查看器页面、PNG和DXF。 DXF 绘图选择 z 其坐标为毫米。 A 类 CAD 文档 (JSON中的一个CSG模型)去GLB,STL,HTML和PNG. A 类 SysML v2 (英语) 文本子集中的源到 SVG, PNG 和 PDF 。 A 类 铁兹 图片通过 Tex 舞台转到 SVG、PNG 和 PDF 。 这个 tikz 输入类型包括回路克兹,tikz-cd和chemfig. 第一个渲染下载 TeX 捆绑。 浏览器阶段绘制出类,状态和序列以外的美人鱼类型,并绘制出每个PDF.

投入产出发动机
数字特别工作组Graphviz 16.1.0, 编入WASM(@viz-js/viz(中文(简体) )
数字巴布亚新几内亚Graphviz,然后将resvg编译为WASM(@resvg/resvg-wasm,带有捆绑字体
人鱼(类,状态,序列)特别工作组发动机本身的剖面和布局. 类和状态图通过Graphviz.
人鱼(类,状态,序列)巴布亚新几内亚相同的SVG,然后resvg编译为WASM(@resvg/resvg-wasm,带有捆绑字体
美人鱼(所有其他类型)SVG, 巴布亚新几内亚, PDF被钉住的美人鱼 11.17.2 在浏览器舞台上建造. 引擎从软件包中为建筑服务.
DOT,美人鱼专题报告由浏览器舞台打印的 SVG
HTML 语言巴布亚新几内亚,PDF浏览器阶段
STEP, IGES, BREP (英语)GLB, HTML, PNG, DXFOpenCascade, 编译为 WASM (occt-import-js; a 三.js 查看器页面; DXF 大纲通过 manifold-3d
CAD 文档GLB, STL, 3MF, HTML, PNG引擎本身的读取器; 固态操作通过 manifold-3d (萨摩亚)
SysML v2( 文本子集)SVG, 巴布亚新几内亚, PDF引擎自己的解析器和视图, 然后是 Graphviz; PDF 通过浏览器阶段
TikZ 相片、电路克兹、tikz-cd、chemfig、mhchem、公交防线、AMS 数学SVG, 巴布亚新几内亚, PDF一个自己的WASM的建筑 tex.web 与 etex.ch; 第一次使用的捆绑下载( e)SCIENG_TEX_BUNDLE_URL, (中文(简体) ), SCIENG_CACHE_DIR),每个有被绑的sha256;PNG通过resvg;PDF通过浏览器阶段
  • 无为网. DOT和美人鱼路径没有网络请求. 浏览器阶段从 Chrome 或 Chromium 启动 SCIENG_BROWSER 带有新的简介。 它的旗帜停止了所有与主机的连接. 客户端拒绝除了页面和被封住的美人鱼建设以外的每一个请求. CI检查了Linux,macOS和Windows上的浏览器进程树.
  • 不安全属性被移除. 每个引擎都去掉 image 财务报告和审定财务报表 stylesheet 属性在布局前,并给出每个警告。 DOT 文件不能使引擎或浏览器获取文件或URL. A 类 URL 属性作为链接留在 SVG 中.
  • 每台机器上都一样的文字. PNG文本使用捆绑的解放塞里夫字体,而不是主机的字体. 当绘图要求字体没有的粗体,斜体或字符时,引擎给出了警告.
  • 限制. 每种渲染都有时间限制,源大小限制和堆积限制. 一个PNG的像素限制为1024 MB.
  • 输入错误 . 失败的渲染拒绝 RenderError 有个密码 引擎永远不会回到另一种格式.
  • 固定运行时间依赖性 仅限: @viz-js/viz, (中文(简体) ), @resvg/resvg-wasm, (中文(简体) ), @mathjax/src, (中文(简体) ), parse5, (中文(简体) ), occt-import-js 财务报告和审定财务报表 manifold-3d没有本地模块和Python.

每个后发版本都增加了一个输入类型. 这个 路线图 列出他们.

安装

npm install @danielsimonjr/sciengjs

包裹需要节点22或更后. 该包是一个ES模块.

快开始

import { writeFile } from "node:fs/promises";
import { render } from "@danielsimonjr/sciengjs";

const source = `digraph G {
  rankdir=LR;
  sensor -> filter -> controller -> actuator;
  controller -> sensor [label="feedback", style=dashed];
}`;

const svg = await render({ type: "dot", source, format: "svg" });
await writeFile("loop.svg", svg.bytes);

const png = await render({ type: "dot", source, format: "png", options: { scale: 2 } });
await writeFile("loop.png", png.bytes);

console.log(png.mime, png.backend, png.warnings);
// image/png graph/viz+raster/resvg []

render 返回 a RenderResult数字 :

外地持有
bytes产出,作为 Uint8Array
mime例如媒体类型 image/svg+xml
backend例如,生成的后端 graph/viz
warnings引擎删除或无法绘制的每样东西都有一个字符串

这个 png 格式选择一个选项, scale (数字大于0,默认为1). 任何其它选项 E_INPUT。 。 。 .

检查这台机器能产生什么

import { capabilities } from "@danielsimonjr/sciengjs";

for (const pair of await capabilities()) {
  if (pair.ready) console.log(pair.type, "->", pair.format);
}

capabilities 报告设计中的每个输入和输出对,对接需要的相机,以及此相机是否准备好。 准备对包括 dot -> svg, (中文(简体) ), dot -> png, (中文(简体) ), math -> svg 财务报告和审定财务报表 math -> png。只有在配置了浏览器时,需要浏览器阶段的一对才准备就绪.

错误

import { render, RenderError } from "@danielsimonjr/sciengjs";

try {
  await render({ type: "dot", source: "digraph { a -> }", format: "svg" });
} catch (err) {
  if (err instanceof RenderError) console.log(err.code, err.message);
}
代码手段
E_INPUT源或选项无效
E_UNSUPPORTED此建筑没有对等的后端, 例如 tikz 改为 svg
E_LIMIT源头、堆积或PNG像素都超过了极限
E_TIMEOUT变形需要的时间比 timeoutMs
E_STAGE_MISSING缺少一个阶段需要的文件,例如捆绑的字体
E_CONFIG配置值无效
E_INTEGRITY下载的文件没有它的预期散列
E_INTERNAL引擎有缺陷 请报告缺陷

配置

每个渲染以可选配置作为其第二个参数. 环境变量或配置文件也可以设置每个值.

密钥环境变量默认
timeoutMsSCIENG_TIMEOUT_MS60 000 个
maxSourceBytesSCIENG_MAX_SOURCE_BYTES10485760(10个米B)
maxMemoryMbSCIENG_MAX_MEMORY_MB2048 (英语)
rasterFontSCIENG_RASTER_FONT捆绑的解放塞里夫
assetsUrlSCIENG_ASSETS_URL页:1 assets/ 软件包的文件夹,该文件夹持有字体和 index_bg.wasmA级 file: 使用主机的 URL localhost 拒绝方式 E_CONFIG。 。 。 .
allowNetworkSCIENG_ALLOW_NETWORKtex-bundles (DOT路径不要求)
maxCadNodesSCIENG_MAX_CAD_NODES1万个
maxCadFacetsSCIENG_MAX_CAD_FACETS2000 000 个

SCIENG_CONFIG 命名 JSON 配置文件. loadConfig 返回已解析的配置.

await render({ type: "dot", source, format: "png" }, { timeoutMs: 10000, maxMemoryMb: 512 });

积分限制在节点之下 Bun运行引擎,但Bun不执行工人的堆积限制.

阶段子路径

一个只需要一个阶段的呼叫者可以导入该阶段的子路径:

import { dotToSvg } from "@danielsimonjr/sciengjs/graph";
import { svgToPng } from "@danielsimonjr/sciengjs/raster";

const { svg, warnings } = await dotToSvg("digraph { a -> b }");
const png = await svgToPng(svg, { scale: 1, maxMemoryMb: 512 });

一个子路径呼叫在呼叫线中运行,没有工人及其极限. 使用 render 用于您不信任的输入.

美人鱼

这个 mermaid 输入绘制类,状态和序列图,不带浏览器. 语法以外的一行拒绝渲染 E_INPUT,则信息为行取名。 设定 lenient 改为 true 跳过这条线,然后得到警告.

其他类人鱼,例如 flowchart 财务报告和审定财务报表 gantt,需要浏览器舞台。 A 类 png 选择 scale (上为0,不大于8,默认为1)两道. 浏览器路径大小 viewBox 图表。 这个 svg 浏览器路径的清晰 width 财务报告和审定财务报表 height。任何其他 png 选项拒绝方式 E_INPUT。 。 。 .

import { render } from "@danielsimonjr/sciengjs";

const source = "sequenceDiagram\nAlice->>Bob: Hello Bob\nBob-->>Alice: Hi Alice";
const { bytes, warnings } = await render({ type: "mermaid", source, format: "svg" }, {});

其他"美人鱼"图型(如流程图和gantt)会走过浏览器阶段. 他们需要 SCIENG_BROWSER没有它,他们就拒绝 E_STAGE_MISSING.被钉住的"美人鱼"在包中建造了船,浏览器舞台为它提供页面服务,因此没有请求离开进程.

数学

这个 math 输入使 LaTeX 数学通过 MathJax 。 输出绘制出每个glyph作为路径,因此不需要字体. 包裹 ams, (中文(简体) ), boldsymbol, (中文(简体) ), color 财务报告和审定财务报表 mhchem 已装入。 A 类 \require 中包含的包件没有效果。 A 类 \require 不同包的拒绝 E_UNSUPPORTED。数学字体不包含的字符也拒绝使用 E_UNSUPPORTED。信息将字符命名.

A 类 png 选择 scale (限数高于0,缺省 1). 这个 svg 别无选择.

import { render } from "@danielsimonjr/sciengjs";

const svg = await render({ type: "math", source: "\\frac{a}{b}", format: "svg" });
const png = await render({ type: "math", source: "\\ce{H2O + CO2 -> H2CO3}", format: "png", options: { scale: 2 } });

绘图

这个 plot 输入从 JSON 绘制图表。 来源是带有密钥的 JSON 文本 data 财务报告和审定财务报表 layout。输出格式为 svg, (中文(简体) ), png 财务报告和审定财务报表 html编辑 svg 财务报告和审定财务报表 png 产出不要求联网.

import { render } from "@danielsimonjr/sciengjs";

const source = JSON.stringify({
  data: [{ type: "scatter", mode: "lines+markers", x: [0, 1, 2], y: [0, 1, 4], name: "y = x^2" }],
  layout: { title: { text: "Square" } },
});
const { bytes } = await render({ type: "plot", source, format: "svg" }, {});

引擎读取了Plotly图格式的一个子集. 子集持有 scatter 跟踪、页面和网格布局密钥, line 财务报告和审定财务报表 rect 形状,以及线性或日志轴。 子集拒绝以外的密钥 E_INPUT 和关键路径。 设定 lenient 改为 true 跳过这样的密钥并获得警告。 这个 html 输出是一个页,它用被绑定的构件Plotly 4.2.0绘制数字。 页面加载从 CDN 创建,带有分资源完整性散列. 包裹没有发货 整个子集在 设计(原始内容存档于2018-09-21)., section the POLT.

读者应用这些规则:

  • 图有顶级密钥 data 财务报告和审定财务报表 layout 只有这个.
  • 每个字母的第一轴是 xaxis 或者说 yaxis其他轴是 xaxis2, (中文(简体) ), xaxis3 上升,没有领先0。 批量接受 xaxis1 为一轴. 这个读者拒绝 xaxis1,使每个轴都有一个名称.
  • 一个轴键必须命名子绘图的轴 layout.grid。 。 。 .
  • tickformat 实值 .Nf 只有N从0到20 N 设置勾选标签的固定小数 .
  • dtick, (中文(简体) ), width 财务报告和审定财务报表 height 必须是高于0.
  • 一轴最多有1000个虱子 A 类 dtick 给更多的滴答拒绝 E_INPUT 和关键路径,例如 layout.xaxis.dtick。 。 。 .

一个需要超过20个小数的勾选标签使用缩写形式,例如 1e-300。一个对小叮当跨过几十年的日志轴只显示大叮当.

控制助手

这个 ./plot 子道有六助道. 每个助手都使用一个传输功能 { num, den } 与分母和分母的系数,最高功率先行. 每个助手返回 { figure, numbers }编辑 figure 是一个阴谋人物。 传过来 render 作为JSON文本来绘制它. 这个 numbers 持有分析来自同一模型的关键值.

花纹为rad/s. 边际和相相分相为度相. 过度率是%.

bode 返回交叉频率和边距 :

import { bode } from "@danielsimonjr/sciengjs/plot";

const { figure, numbers } = bode({ num: [10], den: [1, 1, 0] });
// numbers.gainCrossover is about 3.08, numbers.phaseMargin is about 17.96

step 返回最后值、上升时间、结算时间、超标时间和高峰时间:

import { step } from "@danielsimonjr/sciengjs/plot";

const { figure, numbers } = step({ num: [1], den: [1, 0.6, 1] });
// numbers.overshoot is about 37.2, numbers.riseTime is about 1.32

台阶助推器测量出最高峰和向最终值方向的过射,因此负DC增益给出正确的过射. 在时间网格末端之前无峰值的反应有: peakTime 联 合 国 null 还有一个 overshoot 0. 假想轴上或右侧有柱子的系统没有最终值: null. 上升和沉积时间在样品之间插出.

援助者否认真理 E_INPUT 当模型的根不趋同时,或者当计算值不是有限度时。 0时的一杆或一0是准确的,没有设定频率范围.

impulse 返回峰值及其时间 :

import { impulse } from "@danielsimonjr/sciengjs/plot";

const { figure, numbers } = impulse({ num: [1], den: [1, 1] });
// numbers.peak is 1, numbers.peakTime is 0

nyquist 返回从曲线到点 -1 最小的距离 :

import { nyquist } from "@danielsimonjr/sciengjs/plot";

const { figure, numbers } = nyquist({ num: [10], den: [1, 1, 0] });
// numbers.minDistanceToMinusOne is about 0.299

poleZero 返回柱和零:

import { poleZero } from "@danielsimonjr/sciengjs/plot";

const { figure, numbers } = poleZero({ num: [1, 3], den: [1, 2, 5] });
// the poles are -1 + 2j and -1 - 2j, the zero is -3

rootLocus 返回断开点和每一点的收益:

import { rootLocus } from "@danielsimonjr/sciengjs/plot";

const { figure, numbers } = rootLocus({ num: [1], den: [1, 3, 2] });
// numbers.breakawayPoints[0] is { re: -1.5, k: 0.25 }

画个帮手图,交给 render数字 :

import { render } from "@danielsimonjr/sciengjs";
import { bode } from "@danielsimonjr/sciengjs/plot";

const { figure } = bode({ num: [10], den: [1, 1, 0] });
const { bytes } = await render({ type: "plot", source: JSON.stringify(figure), format: "html" }, {});

治疗中心

一个CAD文档是JSON中的一个CSG模型. 引擎将文档读取为数据. 引擎从文档中不运行代码. 节点类型是:

  • 原始人类 cube, (中文(简体) ), cylinder, (中文(简体) ), sphere 财务报告和审定财务报表 polyhedron· ;
  • 2D 配置文件 rectangle, (中文(简体) ), circle 财务报告和审定财务报表 polygon,作为孩子 extrude 或者说 revolve· ;
  • 业务 union, (中文(简体) ), difference 财务报告和审定财务报表 intersection· ;
  • 转换 translate, (中文(简体) ), rotate, (中文(简体) ), scale 财务报告和审定财务报表 mirror。 。 。 .

每个节点都有一个 name (单位:千美元) color。 。 。 .

建筑师的功能 ./mesh 子路径从 TypeScript 程序写入同一文档 :

import { cad } from "@danielsimonjr/sciengjs/mesh";
import { render } from "@danielsimonjr/sciengjs";

const plate = cad.difference([
  cad.cube([40, 20, 4], { color: [0.7, 0.7, 0.7] }),
  cad.translate([10, 10, -1], cad.cylinder(6, 3, { color: [0.2, 0.4, 1] })),
]);
const source = JSON.stringify(cad.cadDocument(plate, { segments: 48 }));
const { bytes } = await render({ type: "cad", source, format: "stl" }, {});
  • 相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相 切开的一面 difference 有剪刀的颜色.
  • STL没有颜色也没有名字. 彩色模型在STL中给出了警告.
  • format: "3mf" 给出3MF包,保持颜色和名称。 单位为毫米.
  • format: "dxf" 给出 X- Y 平面中的 2D 绘图: 模型的外观,或带有选项 z 在那个高地上 每个闭合的轮廓为一闭合多线,以毫米为单位.
  • format: "pdf" 给出一页第三角取材于 A4 地貌:正面,上下视图,三维和标题块. 每个视图只显示收音机:一个盲孔,一个口袋或一个步骤在视图的轮廓内是不可见的. 画作没有隐藏行. 选项 title (1到80个字符)设置了标题. 长标题得到一个较小的文本高度. 浏览器舞台打印绘图, 因此渲染需要 SCIENG_BROWSER。pdf没有颜色.
  • format: "md" 报告Markdown的制造设计:大小、体积和地表面积,以及三次检查。 挂起检查给出了需要支持沿 +Z 打印的区域( 选项) overhang,默认离垂直45度。 墙壁检查发现墙壁比选项更薄 minWall (默认为 0.8 mm) 在每轴上的32个部分。 空档检查发现空档、空档和空档比选项更窄 minGap (默认为0.5毫米)在同一节。 检查失败不会拒绝渲染 .
  • 超过 maxCadNodes 节点拒绝方式 E_LIMIT 在实心操作开始之前 一个有超过 maxCadFacets 相关方面也以 E_LIMIT。 。 。 .
  • 一个坏值拒绝 E_INPUT。信息给出了 JSON 路径,例如 model.children[1].radius。 。 。 .

符号ML

这个 sysml 输入读取 SysML v2 文本注释的子集。 子集持有 package, (中文(简体) ), part def, (中文(简体) ), part, (中文(简体) ), attribute, (中文(简体) ), port def, (中文(简体) ), port, (中文(简体) ), connect, (中文(简体) ), interface def, (中文(简体) ), interface, (中文(简体) ), requirement def, (中文(简体) ), requirement, (中文(简体) ), satisfy, (中文(简体) ), :> 和评论。 这个 设计 给出准确的语法.

选项 view 选择绘图 :

  • bdd (缺省):定义、组成和专业;
  • ibd: 选项所在部分的部件、端口和连接 root 名称;
  • requirements:要求和 satisfy 关系.
import { render } from "@danielsimonjr/sciengjs";

const source = "part def Car { part wheels : Wheel [4]; } part def Wheel;";
const { bytes } = await render({ type: "sysml", source, format: "svg" }, {});
  • 子集拒绝外的构造 E_INPUT,则信息为行取名.
  • 设定 lenient 改为 true 以未知关键词跳过声明并获得警告.
  • A 类 png 选择 scaleA级 pdf 需要浏览器阶段.

路线图

这个 建设计划 给出递增的顺序。 每一次递增都增加了一个输入类型,它的测试和一个放出. 这个 设计 给每个引擎的API,阶段,安全控制和许可.

输入类型阶段状态
数字图表,光栅在0.1.0中发布
美人鱼图表、美人鱼、浏览器类,状态和顺序:以0.2.0发布;其他类型:以0.3.0发布
LaTeX 数学数学 (MathJax)svg, png 和 pdf 已经构建; pdf 需要浏览器阶段
TikZ, 电路克兹, LaTeXtex (自建的WASM 结构) tex.web(中文(简体) )tikz svg, png 和 pdf 的构建( 未释放); 捆绑来自 texBundleUrl
绘图绘图svg, png和html:以0.5.0发布;pdf没有计划
SysML v2 (英语)sysml, 图表svg, png and pdf:发布于0.9.0
STEP, IGES, BREP (英语)网点( OpenCascade WASM)glb,html和png:以0.7.0放出;dxf:以1.0.8放出
CAD 文档网点( u)manifold-3d(中文(简体) )glb,stl,html和png:以0.8.0发布;3mf:以1.0.4发布;dxf:以1.0.5发布;md(设计制造):以1.0.6发布;pdf(第三角画):以1.0.8发布
HTML 转到 PNG、 PDF 和 Markdownhtml, 浏览器PNG和PDF:以0.3.0发布;Markdown:以0.6.0发布

代理设备的使用

scieng-mcp 给引擎作为MCP工具、斜线命令和技能, 引擎本身对MCP一无所知.

发展

安装 Bun 1.4.4 和节点 22 或以后安装 。 然后运行 bun install --frozen-lockfile。 。 。 .

命令对
bun test运行完整的测试套件
bun run typecheck类型检查 src/ 财务报告和审定财务报表 test/
bun run build将无害环境管理软件包写入 dist/
bun run smoke将构件装入新文件夹并运行在节点下
路径持有
src/引擎:API、配置、工人、登记和阶段
test/单位测试、体外测试、节点测试和烟雾测试
docs/superpowers/设计和建造计划
docs/architecture/建筑文档,门由 repo-tools check
docs/analysis/审判报告和审查
trials/审判是以后阶段的建设。 包裹不是运来的

见 CONTRIBUTING.md。将安全问题报告为 SECURITY.md 告诉你.

许可证

麻省理工学院. 见 LICENSE。每个被借用的发动机都持有自己的许可证. THIRD_PARTY_NOTICES.md 列出它们:Graphviz(EPL-2.0)、resvg(MPL-2.0)和Liberation Serif(SIL Open Font License 1.1).

版本与发布记录

@danielsimonjr/sciengjs 共发布 25 个版本,首次发布于 2026/11/03;过去 12 个月发布了 25 个版本。

版本发布日期距今
1.0.8latest2026/11/074 天前
1.0.72026/11/074 天前
1.0.62026/11/064 天前
1.0.52026/11/065 天前
1.0.42026/11/065 天前
1.0.32026/11/065 天前

关于 @danielsimonjr/sciengjs 的常见问题

@danielsimonjr/sciengjs 是什么?

用于科学和工程图、文件和模型的本地渲染引擎

如何安装 @danielsimonjr/sciengjs?

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

@danielsimonjr/sciengjs 支持 TypeScript 吗?

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

@danielsimonjr/sciengjs 支持 ESM 还是 CommonJS?

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

@danielsimonjr/sciengjs 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@danielsimonjr/sciengjs 可以商用吗?

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

@danielsimonjr/sciengjs 的下载量有多少?

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

@danielsimonjr/sciengjs 还在维护吗?

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