@demlik/tea

中文文档
0.27.0发布于 2026/11/09MITTypeScriptES Module构建来源已验证近 30 天下载 4.1万

TEA-忠实的状态机器底盘——一包,每个主机适配器. 核心+子+测试,外加反应,持久对象,Chrome扩展,节点,内膜,devtools,属性测试模块作为子路径.

中文使用文档
文档目录6 节
  1. 安装
  2. 快速启动
  3. 两台引擎,一台机器
  4. 反应
  5. 重复性
  6. 文档

@demlik/tea (英语)

一个TEA / Elm-Architecture TypeScript库,用于耐用,可重放的状态机器——一个纯还原器,每个主机适配器.

安装

pnpm add @demlik/tea

一次性依赖是 @standard-schema/spec,只显示类型包 为您安装. Cmd.define 带任何标准Schema, 所以把计划 您已经使用的库(按原样分割,或 Effect Schema 通过 Cmd.make 那个 @demlik/tea/effect 出口)。 东道主和 测试适配器骑在可选的同位素上, 您只为您使用的表面添加 : react 编号 : react-dom (单位:千美元) ./react 钩子, ws (节点WebSocket子), fast-check (单位:千美元) ./pbt (一) 物业检验助手, vitest (测试) 公用事业, effect (单位:千美元) ./effect 发动机),以及 @opentelemetry/api (单位:千美元) ./otel 页:1.

快速启动

A 类 机器 是纯数据: a init 还有一个 update 地图按键 Msg 类型. run 驱动它,当它有影响 你手 run 页:1 interpret 地图 执行者; dispatch 折叠 a Msg· ; getState 读取当前 型号。您将模型和模型命名为 Msg 工会 一次,在 types;其他一切都是从机器本身推断出来的. 每一个 这些单词在 词汇表。 。 。 .

import { defineMachine } from "@demlik/tea";
import { run } from "@demlik/tea/promise";

type State = { readonly count: number };
type Msg = { readonly type: "increment" } | { readonly type: "reset" };

const counter = defineMachine({
  types: { model: {} as State, msg: {} as Msg },
  init: (loaded) => (loaded !== null ? [loaded, []] : [{ count: 0 }, []]),
  update: {
    increment: (s) => [{ count: s.count + 1 }, []],
    reset: () => [{ count: 0 }, []],
  },
});

const runtime = await run(counter, {}).ready;
await runtime.dispatch({ type: "increment" });
runtime.getState(); // { count: 1 }

两台引擎,一台机器

核心点是 @demlik/tea,每个 引擎 有自己的进入点。 一个机器 文件只导入核心,所以在任一引擎上都运行不变.

  • @demlik/tea ——核心: defineMachine, (中文(简体) ), Cmd, (中文(简体) ), replay 和类型。 这个 没有输入引擎.
  • @demlik/tea/promise - 承诺引擎。 掌门人还相承.
  • @demlik/tea/effect - 效应引擎(stable页:1 处理器 返回效果, 服务来自您的图层, 手柄的动词返回 键入出错的效果,关闭范围会打断任何内容 飞行.

在承诺引擎上运行一个机器 财务报告和审定财务报表 在效果引擎上 以同一机器文件为基础. 在一个父公司下运行许多机器 在效果引擎上启动儿童机器 spawn, (中文(简体) ), tell 财务报告和审定财务报表 stop。 。 。 . 来自0.15? 移徙指南 显示每一个已删除或重塑的 API,在前后.

反应

useMachine 从 @demlik/tea/react 返回时 [state, send]· ; send(msg) 返回时 undefined 马上,跑步 onError 有一次听到步步失败的声音 一个小姐 停止后停放或发送到水槽 DispatchDiscardedError 下级 phase: "discard"。 。 。 . useRuntime(run, { onError }) 使运行从 要么是引擎, 要么是手造的手柄, 带有承诺返回 dispatch,与 同样的 [state, send] 合同。 它的可选水槽听到丢弃物和手建 调度失败; 运行会保留自己的继器沉入. useMachine 使用两个引擎的 run。用于效果引擎通过 runIn(runtime) 从 @demlik/tea/effect与您的 ManagedRuntime; 其编号 interpret 单元格返回 a Effect 联 合 国 subscribe 运行 a Stream,则 寿命周期( 在严格模式下每挂载一次运行, 子暂停于 <Activity> 隐藏,运行停止在卸载上)是相同的. useRuntime(run, (model) => model.views[id]) 仅当所选值改变时, 才读取一部分并重新提交运行时的更新( r)Object.is) (中文(简体) ).

useBackgroundRuntime 从 @demlik/tea/extension 保留 { state, dispatch }, (中文(简体) ), 与虚空相归 dispatch。其可选性 onError 听到运输故障 下级 phase: "follow-up";背景步骤失败到背景运行. 提供方和 useDispatch 遵守同样的契约.

读取州为结果. 之前等待钩子的代码 dispatch 应删除等待; 需要等待的主机代码应拥有运行和使用 它的发动机 dispatch, (中文(简体) ), idle,或 done。 。 。 .

从 React 驱动机器 显示点击处理器、生命周期行为和出错汇.

重复性

与 fileStore 或者说 doStore,在命令运行前保存状态。 重新装入它. agent.run 自动恢复待完成的工作; 自定义机器处理启动 留言。 如果在崩溃前没有保存效果, 效果可以再次运行 .

让机器耐用 财务报告和审定财务报表 理解还原与重玩。 。 。 .

文档

四个Diátaxis四角星生活在 docs/数字 :

  • 教学 ——以学习为主的教训,通过造出真正的机器,带你通过图书馆.
  • 如何向导 ——以目标为导向,完成具体工作.
  • 参考文献 ——面向信息的API描述,每个公共单元生成.
  • 解释 ——以理解为导向地讨论它如何运作以及它为什么被塑造成这样.

这个 词汇表 定义这些页面使用的每个词:Model、Msg、Cmd、Sub、Store等.

后面还有两块地表 供在图书馆工作的人使用 .patterns/ 如何塑造代码 .decisions/ 这就是为什么它是这样塑造的.

版本与发布记录

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

版本发布日期距今
0.27.0latest2026/11/092 天前
0.26.02026/11/083 天前
0.25.02026/11/083 天前
0.24.02026/11/083 天前
0.23.02026/11/047 天前
0.22.02026/11/029 天前

关于 @demlik/tea 的常见问题

@demlik/tea 是什么?

TEA-忠实的状态机器底盘——一包,每个主机适配器. 核心+子+测试,外加反应,持久对象,Chrome扩展,节点,内膜,devtools,属性测试模块作为子路径.

如何安装 @demlik/tea?

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

@demlik/tea 支持 TypeScript 吗?

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

@demlik/tea 支持 ESM 还是 CommonJS?

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

@demlik/tea 可以商用吗?

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

@demlik/tea 的下载量有多少?

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

@demlik/tea 还在维护吗?

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