# @bpmnkit/feel 中文文档

规范地址：https://npmcn.com/package/%40bpmnkit/feel/

版本：1\.1\.1
npm 元数据更新时间：2026-10-08T12:59:41.007Z
中文译文更新时间：2026-11-08T13:32:16.294Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bpmnkit/feel
原文对照：https://npmcn.com/package/%40bpmnkit/feel/?lang=original
项目主页：https://bpmnkit.com/
源码仓库：https://github.com/bpmnkit/bpmnkit

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：186 kB，21 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：0 个
- 首次发布：2026-03-15T07:10:03.541Z
- 最新版本发布：2026-10-08T12:59:40.527Z
- 近 30 天下载量：2403（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：16（近 12 个月 16 个）

## 中文简介

感觉(亲切的表达语言) 解析器、评估器、事件和亮点——94% DMN TCK 兼容性

## 安装

```sh
npm install @bpmnkit/feel
```

也可以使用：`pnpm add @bpmnkit/feel`、`yarn add @bpmnkit/feel`、`bun add @bpmnkit/feel`

## README

[![BPMN Kit logo](https://bpmnkit.com/favicon.svg)](https://bpmnkit.com/)

# @bpmnkit/ feel (英语)

感觉(亲切的表达语言) 解析器、评估器、事件和亮点——94% DMN TCK 兼容性

[![npm](https://img.shields.io/npm/v/@bpmnkit/feel?style=flat-square&color=6244d7)](https://www.npmjs.com/package/@bpmnkit/feel) [![license](https://img.shields.io/npm/l/@bpmnkit/feel?style=flat-square)](https://github.com/bpmnkit/bpmnkit/blob/main/LICENSE) [![typescript](https://img.shields.io/badge/TypeScript-strict-6244d7?style=flat-square&logo=typescript&logoColor=white)](https://github.com/bpmnkit/bpmnkit) [![ai-assisted](https://img.shields.io/badge/AI--assisted-claude-8b5cf6?style=flat-square)](https://github.com/bpmnkit/bpmnkit) [![tier: core](https://img.shields.io/badge/tier-core-16a34a?style=flat-square)](https://bpmnkit.com/docs/getting-started/stability#product-tiers)

[网站](https://bpmnkit.com/) • 妇女 [文档](https://bpmnkit.com/docs) • 妇女 [GitHub 图像](https://github.com/bpmnkit/bpmnkit) • 妇女 [更改日志](https://github.com/bpmnkit/bpmnkit/blob/main/packages/feel/CHANGELOG.md)

> **核心层.** Semver at 1.0:没有大放送,没有突破. 见 [产品级](https://bpmnkit.com/docs/getting-started/stability#product-tiers)。 。 。 .

* * *

## 概览

`@bpmnkit/feel` 执行 DMN 决策表和 BPMN 条件表达式中使用的感受表达式语言,并通过 2 053 个感受中1 941个 [DMN TCK 电话](https://dmn-tck.github.io/tck/) (94.5%)——其余病例及其原因列于 `tests/tck.test.ts`它执行 Camunda 8 的扩展,也用于感觉,并匹配 Camunda 感知文件中378个可重复的例子中的375个(`tests/camunda-parity.test.ts`) (中文(简体) ). 它包括一个活化剂,递归-后世解析器,AST评价器,formatter,和语法亮点.

## 特征

-   **完全感觉语法** ——算术,比较,逻辑,函数调用,路径,过滤器
-   **时间类型** ——日期,时间,日期,期限(ISO 8601,全谱遵守)
-   **一次性测试** —— DMN 输入表达式语法 (`> 5`, (中文(简体) ), `"gold", "silver"`, (中文(简体) ), `[1..10]`(中文(简体) )
-   **内设职能** 101感函数(字符串、列表、数字、日期、上下文、范围),包括 Camunda 扩展(`assert`, (中文(简体) ), `partition`, (中文(简体) ), `to json`, (中文(简体) ), `fromAi`, (...) (中文(简体) )
-   **区域表达式** —— 说 `[1..10]`, (中文(简体) ), `(0..1)`, (中文(简体) ), `[today..end]`
-   **上下文文字** —— 说 `{ key: value, nested: { x: 1 } }`
-   **语法突出显示** ——编辑语义符号分类
-   **零依赖关系**

## 安装

```sh
npm install @bpmnkit/feel
```

## 快速启动

### 评估表达式

```typescript
import { parseExpression, evaluate } from "@bpmnkit/feel"

const parsed = parseExpression("amount * 1.2 + fee")
if (!parsed.errors.length) {
  // `evaluate` takes an EvalContext — variables live under `vars`.
  const result = evaluate(parsed.ast!, { vars: { amount: 100, fee: 5 } })
  console.log(result) // 125
}
```

### 评估无效测试( DMN 输入表达式)

```typescript
import { parseUnaryTests, evaluateUnaryTests } from "@bpmnkit/feel"

// Does input value match any listed condition?
const parsed = parseUnaryTests('"gold","silver"')
const matches = evaluateUnaryTests(parsed.ast!, "gold", { vars: {} })
console.log(matches) // true
```

### 语法突出显示

```typescript
import { annotate, highlightToHtml } from "@bpmnkit/feel"

// Classified tokens, for an editor to style itself.
annotate("x > 1")[0] // { kind: "variable", value: "x", start: 0, end: 1 }

// Or the same tokens already wrapped in <span class="feel-…"> elements.
highlightToHtml('if x > 10 then "high" else "low"')
```

## API 参考

| 导出 | 说明 |
| --- | --- |
| `parseExpression(src)` | 解析感觉表达式 ~ `ParseResult` |
| `parseUnaryTests(src)` | 解析非常规测试 • `ParseResult` |
| `evaluate(ast, ctx)` | 评估解析表达式; `ctx` 实值 `{ vars }` |
| `evaluateUnaryTests(ast, input, ctx)` | 对照非必要测试的测试输入 |
| `formatFeel(node, opts?)` | 不错的打印 a **解析节点**文本 |
| `highlightToHtml(src)` | 包裹在纸上 `<span class="feel-…">` 要素 |
| `highlightFeel(src)` | 别名 `highlightToHtml` |
| `tokenize(src)` | 原始令牌流 |
| `annotate(src)` | 为突出显示而分类的指针(`kind`, (中文(简体) ), `value`, (中文(简体) ), `start`, (中文(简体) ), `end`(中文(简体) ) |

### 解析结果

```typescript
interface ParseResult {
  ast: FeelNode | null
  errors: ParseError[]   // { message, start, end }
}
```

* * *

## 相关软件包

| 软件包 | 说明 |
| --- | --- |
| [`@bpmnkit/core`](https://www.npmjs.com/package/@bpmnkit/core) | BPMN/DMN/Form 剖析器,构建器,布局引擎 |
| [`@bpmnkit/canvas`](https://www.npmjs.com/package/@bpmnkit/canvas) | 零依赖 SVG BPMN 查看器 |
| [`@bpmnkit/editor`](https://www.npmjs.com/package/@bpmnkit/editor) | 全功能交互式 BPMN 编辑器 |
| [`@bpmnkit/engine`](https://www.npmjs.com/package/@bpmnkit/engine) | 用于测试和演示的轻量级 BPMN 流程模拟器 |
| [`@bpmnkit/plugins`](https://www.npmjs.com/package/@bpmnkit/plugins) | 34个可堆肥画布插件 |
| [`@bpmnkit/api`](https://www.npmjs.com/package/@bpmnkit/api) | Camunda 8 REST API TypeScript 客户端 |
| [`@bpmnkit/ascii`](https://www.npmjs.com/package/@bpmnkit/ascii) | 作为 Unicode ASCII 艺术的 Render BPMN 图表 |
| [`@bpmnkit/markdown`](https://www.npmjs.com/package/@bpmnkit/markdown) | Markdown中的 BPMN 图表—— 注释、 标记下和 README 预发 |
| [`@bpmnkit/docspack`](https://www.npmjs.com/package/@bpmnkit/docspack) | 不丹 Kit Docs 作为AI 代理的离线文件包 |
| [`@bpmnkit/camunda-docspack`](https://www.npmjs.com/package/@bpmnkit/camunda-docspack) | Camunda 8 个文件作为AI 代理的离线文件包 |
| [`@bpmnkit/ui`](https://www.npmjs.com/package/@bpmnkit/ui) | 共享设计符和UI组件 |
| [`@bpmnkit/profiles`](https://www.npmjs.com/package/@bpmnkit/profiles) | CLI 代理共享认证、 配置文件存储和客户端工厂 |
| [`@bpmnkit/operate`](https://www.npmjs.com/package/@bpmnkit/operate) | Camunda集群的监测与业务前端 |
| [`@bpmnkit/connector-gen`](https://www.npmjs.com/package/@bpmnkit/connector-gen) | 从 OpenAPI 规格生成连接器模板 |
| [`@bpmnkit/connectors`](https://www.npmjs.com/package/@bpmnkit/connectors) | Camunda 8 OOTB 连接器目录和确定模板应用程序 |
| [`@bpmnkit/cli`](https://www.npmjs.com/package/@bpmnkit/cli) | Camunda 8 命令行接口( casen) |
| [`@bpmnkit/proxy`](https://www.npmjs.com/package/@bpmnkit/proxy) | 本地 AI 桥和 Camunda API 代理服务器 |
| [`@bpmnkit/patterns`](https://www.npmjs.com/package/@bpmnkit/patterns) | BPMNKit AIKit 域进程模式 |
| [`@bpmnkit/reebe-wasm`](https://www.npmjs.com/package/@bpmnkit/reebe-wasm) | WebAssembly BPMN 浏览器模拟引擎 |
| [`@bpmnkit/worker-client`](https://www.npmjs.com/package/@bpmnkit/worker-client) | 独立工人的Thin Zeebe REST客户端 |
| [`@bpmnkit/flow`](https://www.npmjs.com/package/@bpmnkit/flow) | 源自BPMN、工作类型和工人的代码第一持久流动 |
| [`@bpmnkit/user-tasks`](https://www.npmjs.com/package/@bpmnkit/user-tasks) | Camunda 8 可嵌入的用户任务部件 |
| [`@bpmnkit/cli-sdk`](https://www.npmjs.com/package/@bpmnkit/cli-sdk) | 为 casen CLI 创建 SDK 插件 |
| [`@bpmnkit/create-casen-plugin`](https://www.npmjs.com/package/@bpmnkit/create-casen-plugin) | 脚手架, 在秒内新建一个 clin CLI 插件 |
| [`@bpmnkit/casen-report`](https://www.npmjs.com/package/@bpmnkit/casen-report) | 来自 Camunda 8 事件的 HTML 报告和 SLA 数据 |
| [`@bpmnkit/casen-worker-http`](https://www.npmjs.com/package/@bpmnkit/casen-worker-http) | 示例 HTTP 工人插件 – 用活的 JSONPlaceholders API 数据完成工作 |
| [`@bpmnkit/casen-worker-ai`](https://www.npmjs.com/package/@bpmnkit/casen-worker-ai) | AI任务工作人员——分类、总结、提取和决定使用克洛德 |

## 许可证

[麻省理工学院](https://github.com/bpmnkit/bpmnkit/blob/main/LICENSE) BPMN Kit—— 制片人: [u11g (单位:千克)](https://u11g.com/)

[![BPMN Kit](https://bpmnkit.com/favicon.svg)](https://bpmnkit.com/)

## 常见问题

### @bpmnkit/feel 是什么？

感觉\(亲切的表达语言\) 解析器、评估器、事件和亮点——94% DMN TCK 兼容性

### 如何安装 @bpmnkit/feel？

在项目目录运行 npm install @bpmnkit/feel，或使用 pnpm add / yarn add / bun add。

### @bpmnkit/feel 支持 TypeScript 吗？

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

### @bpmnkit/feel 支持 ESM 还是 CommonJS？

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

### @bpmnkit/feel 需要什么版本的 Node\.js？

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

### @bpmnkit/feel 可以商用吗？

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

### @bpmnkit/feel 的下载量有多少？

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

### @bpmnkit/feel 还在维护吗？

最新版本 1\.1\.1 发布于 2026/10/08（1 个月前）；至今共发布 16 个版本，其中过去 12 个月发布了 16 个；首次发布于 2026/03/15。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

