ireko

中文文档
0.1.3发布于 2026/11/04MITTypeScriptES Module零依赖构建来源已验证

TypeScript的可组合图形和树布局。为每个容器选择一个布局,并为任何渲染器获取框和路由边缘。

中文使用文档
文档目录11 节
  1. 安装
  2. 使用它
  3. 两种观点
  4. 文本语言
  5. 入口点
  6. 反应
  7. 反应流子流
  8. 何时使用另一个库
  9. 需求
  10. 链接
  11. 许可证

ireko

TypeScript的可组合图形和树布局。为每个容器选择一个布局,并为任何渲染器获取框和路由边缘。

A system architecture laid out by ireko: nested containers with services, and extra edges between them

指南 · 操场上 · 画廊 · API · 反应流

ireko在日语中是一组盒子的意思。该库布局了嵌套框的树:树环的网格,架构图,整洁的组织结构图或React Flow子流。它没有运行时依赖项。经过压缩和压缩后,内核大约为13 kB。

安装

npm install ireko

使用它

import { grid, layout, radial } from "ireko";
import { toSVG } from "ireko/svg";

const root = grid.nested("system",
  radial.nested("web", "home", "cart", "search"),
  grid("api", "auth", "orders"),
);
const result = layout({ root, edges: [{ source: "cart", target: "orders", label: "checkout" }] });

result.nodes;  // a box for each node: { id, x, y, width, height, container, depth, ... }
result.edges;  // a route for each edge: { source, target, kind, points, label }
// The router avoid draws edges around the other boxes: layout(input, { router: "avoid" })
result.issues; // the findings of the audit: [] for this input
document.body.innerHTML = toSVG(result);

两种观点

每个有子节点的节点选择两个东西:

  • 一个策略: 如何安排它的孩子。 grid 把它们排成行和列。 radial 把它们放在戒指上。 tree 制作一个整洁的树,例如组织结构图。 layers 从孩子之间的边缘绘制流程图。
  • 一个模式: 它的孩子去哪里。在 linked 模式下,它们在节点周围,并且边将它们连接起来。在 nested 模式时,它们位于节点的框内。

您可以将自己的策略添加到引擎中。选择加入策略 force 从 ireko/strategies/force 安排一个没有层级的网络。将其注册为 createEngine。

这两种选择仅适用于一个节点,因此每个容器都有自己的布局。引擎在放置每个子树之前测量它们,所以没有两个子树重叠。每个布局都检查自己,并把每个问题放进去 issues。

文本语言

几行相同的输入。这个 操场上 使用它。

import { layout } from "ireko";
import { toSVG } from "ireko/svg";
import { parse } from "ireko/text";

const parsed = parse(`
  system nested {
    web radial nested { home cart search }
    api { auth orders }
  }
  cart -> orders "checkout"
`);
if (parsed.ok) document.body.innerHTML = toSVG(layout(parsed.input));

入口点

进口内容
ireko引擎,策略,路由器,审计和构建器。它不进口任何东西。
ireko/textparse 和 print 对于文本语言
ireko/svgtoSVG (字符串,也在服务器上)和 mountSvg (现场观看)
ireko/dommountDom:一个实时视图,每个框有一个元素
ireko/canvasmountCanvas:画布上的实时视图,用于大型布局
ireko/render主题,视口和实时视图的动画
ireko/reactuseLayout, LayoutSvg 和 LayoutView
ireko/xyflowlayoutFlow, toXYFlow, PolylineEdge 和 GroupNode 用于React Flow 12
ireko/examples画廊的输入

实时视图具有平移、缩放、选择和从一个布局到下一个布局的动画。

反应

import { LayoutView, useLayout } from "ireko/react";

function Diagram({ input }) {
  const result = useLayout(input); // keep input in a memo or a state
  return <LayoutView layout={result} style={{ height: 400 }} onPick={(id) => console.log(id)} />;
}

LayoutSvg 绘制一个没有效果的静态SVG,因此它与服务器呈现一起工作。

反应流子流

layoutFlow 给每个组一个节点 parentId 子节点)保存子节点的大小,并给每个节点一个位置。每个组织都有自己的策略。

import { ReactFlow } from "@xyflow/react";
import { edgeTypes, layoutFlow, nodeTypes } from "ireko/xyflow";

const { nodes, edges } = layoutFlow(myNodes, myEdges, {
  nodeSpec: (node) => (node.id === "server" ? { layout: "radial" } : undefined),
});

<ReactFlow nodes={nodes} edges={edges} nodeTypes={nodeTypes} edgeTypes={edgeTypes} fitView />;

这个 React流程指南 有一个现场演示。

何时使用另一个库

这个库展示了容器树。对于带有层的大型有向图,例如带有长链的流程图,请使用dagre或ELK。这个库没有交叉减少,没有端口,没有围绕障碍物的路由。这个 比较 请听详细报道。

需求

  • 当前浏览器,或Node.js 22.12或更高版本
  • ESM只
  • React 18或更高版本 ireko/react, @xyflow/react 12 ireko/xyflow. 两者都是可选的对等依赖项。

许可证

麻省理工学院

版本与发布记录

ireko 共发布 5 个版本,首次发布于 2026/10/17;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.3latest2026/11/041 天前
0.1.22026/10/2511 天前
0.1.12026/10/2016 天前
0.1.02026/10/1719 天前
0.0.0-stage2026/10/1719 天前

关于 ireko 的常见问题

ireko 是什么?

TypeScript的可组合图形和树布局。为每个容器选择一个布局,并为任何渲染器获取框和路由边缘。

如何安装 ireko?

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

ireko 支持 TypeScript 吗?

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

ireko 支持 ESM 还是 CommonJS?

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

ireko 需要什么版本的 Node.js?

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

ireko 可以商用吗?

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

ireko 还在维护吗?

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