# @engine262/engine262 中文文档

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

版本：0\.0\.1-46acc94625794d30f81b7a83dd608887530163a6
npm 元数据更新时间：2026-11-13T11:51:14.795Z
中文译文更新时间：2026-11-13T17:35:19.111Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：25 MB，1268 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：ws ^8\.18\.0
- 首次发布：2021-11-26T16:25:49.710Z
- 最新版本发布：2026-11-13T11:51:14.287Z
- 近 30 天下载量：3402（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：157（近 12 个月 53 个）

## 中文简介

在JavaScript中实施ECMA-262

## 安装

```sh
npm install @engine262/engine262
```

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

## README

# 发动机262

在JavaScript中实施ECMA-262

目标

-   100%的光谱遵守率
-   回顾
-   修改的便利

非目标

-   以牺牲任何目标为代价的速度

这个项目受 [行为守则](https://github.com/engine262/engine262/blob/master/CODE_OF_CONDUCT.md)。 。 。 .

加入我们 `#engine262:matrix.org`。 。 。 .

## 为什么会这样

在帮助开发JavaScript的新功能的同时,我发现了其中之一 最有用的方法 找出什么是可行的什么是不能 实际使用新特性运行代码. [宝贝](https://babeljs.io/) 这真是太棒了 但是 有时候,一些特征只是不能 很好地代表它。 同样, 实施其中一种发动机的特性是一项大型工作,涉及 长编译时间和有优化编译器的烦扰错误.

引擎262 是让 JavaScript 开发者拥有新游戏场的工具 特性可以迅速被原型和探索. 例如,添加: [执行表达式](https://github.com/tc39/proposal-do-expressions) 至此引擎与以下 diff 一样简单:

```diff
--- a/src/evaluator.mts
+++ b/src/evaluator.mts
@@ -232,6 +232,8 @@ export function* Evaluate(node) {
     case 'GeneratorBody':
     case 'AsyncGeneratorBody':
       return yield* Evaluate_AnyFunctionBody(node);
+    case 'DoExpression':
+      return yield* Evaluate_Block(node.Block);
     default:
       throw new OutOfRange('Evaluate', node);
   }
--- a/src/parser/ExpressionParser.mts
+++ b/src/parser/ExpressionParser.mts
@@ -579,6 +579,12 @@ export class ExpressionParser extends FunctionParser {
         return this.parseRegularExpressionLiteral();
       case Token.LPAREN:
         return this.parseParenthesizedExpression();
+      case Token.DO: {
+        const node = this.startNode<ParseNode.DoExpression>();
+        this.next();
+        node.Block = this.parseBlock();
+        return this.finishNode(node, 'DoExpression');
+      }
       default:
         return this.unexpected();
     }
```

这种简单适用于许多其他建议,例如: [可选链条](https://github.com/tc39/proposal-optional-chaining), (中文(简体) ), [模式匹配](https://github.com/tc39/proposal-pattern-matching), (中文(简体) ), [管道操作员](https://github.com/tc39/proposal-pipeline-operator)还有更多 这个引擎也有 用于在ECMA-262和 [测试262](https://github.com/tc39/test262),用于 符合 JavaScript 执行.

## 所需资源

要运行引擎262本身, 支持最近 ECMAScript 特性的引擎 这是需要的。 此外,《国家行动倡议》`bin/engine262.js`)和试验262跑道 (单位:千美元)`test/test262/test262.mts`)需要最新版本的Node.js.

## 使用引擎262

从npm可以安装.

```shell
npm install @engine262/engine262
yarn install @engine262/engine262
pnpm install @engine262/engine262
```

如果您在全球安装, 您可以像这样使用 CLI :

`$ engine262`

### 引擎262操场

[经典游乐场](https://engine262.js.org/) 财务报告和审定财务报表 [Chrome Devtools 风格操场](https://engine262.js.org/devtools.html)

### 发动机262 CLI

#### \--单元/-m

将文件评价为模块 .

#### \--eval < string > / -e < string >

评估给定的字符串并退出 .

#### \--features QQfeatureA,featureB > / --features = all (中文(简体) )

运行 `engine262 --list-features` 以查看所有 ECMAScript 特性可以切换.

#### 无测试262

别曝光 `$` 财务报告和审定财务报表 `$262` 用于测试262测试套件的全局变量.

#### 无检查者

不要开始检查.

默认的引擎 262 将启动检查器 `ws://localhost:9229/` (像节点.js与 `--inspector`) (中文(简体) ). 见 [节点引导](https://nodejs.org/en/learn/getting-started/debugging#inspector-clients) 用于连接.

#### \-- 不审查

不启用检查器中的预览功能 .

### 引擎262 API

见 [实例](https://github.com/engine262/engine262/blob/main/lib-src/node/example.mts)。 。 。 .

## 开发引擎262

`npm run build` 财务报告和审定财务报表 `npm run watch` 将建造并观看建造.

`npm run test:test262` 将运行 [测试262](https://github.com/tc39/test262) 测试套房。 运行 `npm run test:test262 -- --help` 以查看试跑者选项.

`npm start` 启动引擎262 CLI.

`npm run inspector` 启动网站( 调试引擎262 主要发生在这里) .

## 相关项目

许多人和组织试图撰写 JavaScript 解释器 在JavaScript中很像引擎262,目标不同. 其中一些是 虽然引擎262并非基于其中任何一种,但在此列出以供参考.

-   [https://github.com/NeilFraser/JS-解释器](https://github.com/NeilFraser/JS-Interpreter)
-   [https://github.com/metaes/metaes (英语)](https://github.com/metaes/metaes)
-   [https://github.com/锡巴克/斯瓦尔](https://github.com/Siubaak/sval)

## 常见问题

### @engine262/engine262 是什么？

在JavaScript中实施ECMA-262

### 如何安装 @engine262/engine262？

在项目目录运行 npm install @engine262/engine262，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 engine262，可以用 npx engine262 直接运行。

### @engine262/engine262 支持 TypeScript 吗？

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

### @engine262/engine262 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @engine262/engine262 可以商用吗？

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

### @engine262/engine262 的下载量有多少？

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

### @engine262/engine262 还在维护吗？

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

