# @ava/babel 中文文档

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

版本：2\.0\.0
npm 元数据更新时间：2022-04-04T16:41:54.436Z
中文译文更新时间：2026-11-07T07:26:04.045Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：30.2 kB，9 个文件
- TypeScript 类型：未声明
- Node.js 要求：\>=12\.22 \<13 \|\| \>=14\.16 \<15 \|\| \>=16
- 运行依赖：21 个
- 首次发布：2019-10-25T18:17:47.347Z
- 最新版本发布：2021-07-04T13:28:34.217Z
- 近 30 天下载量：50757（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 0 个）

## 中文简介

AVA 的 Babel 供应商

## 安装

```sh
npm install @ava/babel
```

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

## README

# @ ava/ babel (帮助)

翻译: [法国语Name](https://github.com/avajs/ava-docs/tree/master/fr_FR/related/babel/README.md)

添加数 [贝贝 7](https://babeljs.io/) 支助 [阿富汗](https://avajs.dev/) 这样您就可以在测试中使用最新的JavaScript语法. 我们利用我们 `@ava/babel/stage-4` 预设。 我们还使用第二个预设, `@ava/babel/transform-test-files` 启用 [强化断言信息](https://github.com/avajs/ava/blob/master/docs/03-assertions.md#enhanced-assertion-messages) 发现不当使用 `t.throws()` 断言.

默认情况下, 我们的 Babel 管道被应用到测试和帮助文件, 结束于 `.cjs` 财务报告和审定财务报表 `.js`。如果您的项目使用 Babel,那么我们将使用您的项目 Babel 配置自动编译这些文件 。 这个 `@ava/babel/transform-helper-files` 先应用预设,然后 `@ava/babel/stage-4` 最后一个.

如果你在使用 Babel 来获取源文件, 那你也必须 [配置源编译](https://npmcn.com/package/%40ava/babel/#readme-compile-sources)。 。 。 .

## 启用 Babel 支持

将此软件包添加到您的工程中 :

```console
npm install --save-dev @ava/babel
```

然后,启用 Babel 支持 `package.json` 或者说 `ava.config.*`数字 :

**`package.json`数字 :**

```json
{
    "ava": {
        "babel": true
    }
}
```

## 自定义 AVA 如何编译您的测试文件

您可以在 `package.json` 或者说 `ava.config.*`例如,以下配置增加了对JSX语法的支持,以及 [预设env](https://babeljs.io/docs/en/babel-preset-env)。 。 。 .

**`package.json`数字 :**

```json
{
    "ava": {
        "babel": {
            "extensions": [
                "js",
                "jsx"
            ],
            "testOptions": {
                "plugins": ["@babel/plugin-syntax-jsx"],
                "presets": ["@babel/preset-env"]
            }
        }
    }
}
```

全体 [Babel 选项](https://babeljs.io/docs/en/options) 允许在 `testOptions` 对象.

## 编译额外文件

默认情况下,只能编译测试文件. 您可以通过提供 glob 模式来编译附加文件作为测试 :

**`package.json`数字 :**

```json
{
    "ava": {
        "babel": {
            "compileAsTests": ["test/helpers/**/*"]
        }
    }
}
```

## 重置 AVA 的缓存

AVA 缓存已编译的测试和帮助文件 。 它会在您更改这些文件时自动重编这些文件. AVA 尽量检测您的 Babel 配置文件、插件和预设的更改 。 但是,如果你的最新 Babel 配置似乎没有被应用, 你可以重置 AVA 的缓存 :

```console
$ npx ava reset-cache
```

## 添加额外的扩展

您可以配置 AVA 以识别额外的文件扩展并使用 Babel 编译这些测试和帮助文件 .

**`package.json`数字 :**

```json
{
    "ava": {
        "babel": {
            "extensions": [
                "js",
                "jsx"
            ]
        }
    }
}
```

另见AVA的 [`extensions` 选项](https://github.com/avajs/ava/blob/master/docs/06-configuration.md#options)。 。 。 .

## 让 AVA 跳过您的项目 Babel 选项

您可能不希望 AVA 使用您的项目的 Babel 选项, 例如, 如果您的项目依赖于 Babel 6 。 设定 `babelrc` 财务报告和审定财务报表 `configFile` 选项 `false`。 。 。 .

**`package.json`数字 :**

```json
{
    "ava": {
        "babel": {
            "testOptions": {
                "babelrc": false,
                "configFile": false
            }
        }
    }
}
```

## 禁用 AVA 阶段-4 预设

您可以禁用 AVA 的阶段-4 预设 .

**`package.json`数字 :**

```json
{
    "ava": {
        "babel": {
            "testOptions": {
                "presets": [
                    ["module:@ava/babel/stage-4", false]
                ]
            }
        }
    }
}
```

注意这一点: _没有_ 停止AVA使用 Babel 编译您的测试文件 .

如果您想要, 您可以禁用您项目 Babel 配置中的预设 .

## 保存 ES 模块语法

默认情况下,AVA的阶段-4预设会将ES模块语法转换为CommonJS. 这可以禁用.

**`package.json`数字 :**

```json
{
    "ava": {
        "babel": {
            "testOptions": {
                "presets": [
                    ["module:@ava/babel/stage-4", {"modules": false}]
                ]
            }
        }
    }
}
```

你必须使用 [`esm`](https://github.com/standard-things/esm) 模块,以便AVA仍然可以装入测试文件. [看我们的食谱的细节](https://github.com/avajs/ava/blob/master/docs/recipes/es-modules.md)。 。 。 .

## 禁用增强功能

默认情况下,AVA会编译测试和帮助文件并附加一些增强. 通过设置禁用此选项 `compileEnhancements` 改为 `false`数字 :

**`package.json`数字 :**

```json
{
    "ava": {
        "babel": {
            "compileEnhancements": false
        }
    }
}
```

## 使用 Babel 多填充器

AVA允许您使用新的JavaScript语法来编写测试,甚至可以在Node.js版本上写,否则不会支持. 然而,它并不添加或修改您当前环境的内置. 例如,使用AVA不会提供现代特征,例如: `Object.fromEntries()` (原始内容存档于2019-09-21). To a general Node.js 10 environment.

通过加载 [贝贝的 `polyfill` 模块](https://babeljs.io/docs/usage/polyfill/) 您可以选择加入这些特性。 请注意, 这将改变环境, 这可能会影响您的程序的行为 .

你可以启用 `polyfill` 通过添加到 AVA 的模块 `require` 选项.

**`package.json`数字 :**

```json
{
    "ava": {
        "require": [
            "@babel/polyfill"
        ]
    }
}
```

你需要安装 `@babel/polyfill` 你自己来.

## 编译来源

AVA 目前没有编译源文件 。 你只能装了 [贝贝的 `register` 模块](http://babeljs.io/docs/usage/require/),将按需要汇编源文件.

你可以启用 `register` 通过添加到 AVA 的模块 `require` 选项.

**`package.json`数字 :**

```json
{
    "ava": {
        "require": [
            "@babel/register"
        ]
    }
}
```

你需要安装 `@babel/register` 你自己来.

`@babel/register` 将 _(单位:千美元)_ 处理您的测试和帮助文件。 在大多数情况下,这种情况是不必要的。 如果您创建了需要的新文件 `@babel/register` 您可以告诉它要忽略的文件路径。 比如说,你 `test` 目录创建 `_register.js`数字 :

```js
// test/_register.js:
require('@babel/register')({
    // These patterns are relative to the project directory (where the `package.json` file lives):
    ignore: ['node_modules/*', 'test/*']
});
```

现在,而不是要求 `@babel/register`时,需要 `./test/_register` 换句话说.

**`package.json`数字 :**

```json
{
    "ava": {
        "require": [
            "./test/_register.js"
        ]
    }
}
```

注意装入 `@babel/register` 每一个工人过程都有非部落业绩成本。 如果您有许多测试文件, 您可能想要考虑使用构建步骤来编译您的源 _在此之前_ 运行你的测试。 这不理想,因为它使AVA的手表模式变得复杂 所以我们建议使用 `@babel/register` 直到表现处罚过重为止 建立预编步骤是超出本文件范围,但我们建议你检查一下其中之一 [建立支持 Babel 的系统](http://babeljs.io/docs/setup/)。有一个 [问题](https://github.com/avajs/ava/issues/577) 讨论如何改善这种经历.

## Web 包装别名

[Web 包装别名](https://webpack.js.org/configuration/resolve/#resolve-alias) 可以用来提供一条捷径,来深入地筑巢或以其他方式提供不便的道路. 如果在源文件中已经使用化名,则需要确保您可以在测试文件中使用相同的化名.

安装 `babel-plugin-webpack-alias-7` 以为德从. 然后在 AVA 的 Babel 配置中添加插件 :

`package.json`数字 :

```json
{
    "ava": {
        "babel": {
            "testOptions": {
                "plugins": [
                    [
                        "babel-plugin-webpack-alias-7",
                        {
                            "config": "./path/to/webpack.config.test.js"
                        }
                    ]
                ]
            }
        }
    }
}
```

## `@ava/babel/stage-4`

带来希望 [已完成ECMAScript提案](https://github.com/tc39/proposals/blob/master/finished-proposals.md) 到AVA的测试和帮助文件.

高效地应用最小变换,在Node.js 10和12上运行最新的JavaScript语法.

内建没有增加或扩展,所以像"快活"这样的地貌, `Array.prototype.includes` 或者说 `String.prototype.padStart` 只有运行测试的Node.js版本支持它时,才能提供。 咨询 [节点. 绿色](http://node.green/) 详细情况.

有时一个特殊特征是 _多数_ 在Node.js执行。 在这种情况下,不实行改造.

并非所有建议都可以通过Babel变换来支持,详情见下文。 Babel可能需要"语法"插件来分析某些文件. 这些插件应明确应用,因为这个预设可能不包括它们. 如果你使用AVA的 Babel 编译,这个已经解决了.

### 支持的提案

| 提议 | 支助 |
| --- | --- |
| [`Array.prototype.includes`](https://github.com/tc39/Array.prototype.includes) | 没有 |
| [`Object.values`编号 :`Object.entries`](https://github.com/tc39/proposal-object-values-entries) | 没有 |
| [字符串粘贴](https://github.com/tc39/proposal-string-pad-start-end) | 没有 |
| [`Object.getOwnPropertyDescriptors`](https://github.com/ljharb/proposal-object-getownpropertydescriptors) | 没有 |
| [在函数参数列表和调用中拖入逗号](https://github.com/tc39/proposal-trailing-function-commas) | 对 |
| [共享内存和漫画](https://github.com/tc39/ecmascript_sharedmem) | 没有 |
| [提升模板文字限制](https://github.com/tc39/proposal-template-literal-revision) | 没有 |
| [`s` (单位:千美元)`dotAll`(正则表达式的旗帜)](https://github.com/tc39/proposal-regexp-dotall-flag) | 对 |
| [RegExp 命名捕获组](https://github.com/tc39/proposal-regexp-named-groups) | 没有 |
| [RegExp 外观后面的星座](https://github.com/tc39/proposal-regexp-lookbehind) | 没有 |
| [RegExp Unicode 属性逃逸](https://github.com/tc39/proposal-regexp-unicode-property-escapes) | 没有 |
| [`Promise.prototype.finally`](https://github.com/tc39/proposal-promise-finally) | 没有 |
| [同步迭代](https://github.com/tc39/proposal-async-iteration) | 部分页:1 |
| [可选 `catch` 约束](https://github.com/tc39/proposal-optional-catch-binding) | 对 |
| [JSON 超级集](https://github.com/tc39/proposal-json-superset) | 没有 |
| [`Symbol.prototype.description`](https://github.com/tc39/proposal-Symbol-description) | 没有 |
| [`Function.prototype.toString` 订正](https://github.com/tc39/Function-prototype-toString-revision) | 没有 |
| [`Object.fromEntries`](https://github.com/tc39/proposal-object-from-entries) | 没有 |
| [结构良好 `JSON.stringify`](https://github.com/tc39/proposal-well-formed-stringify) | 没有 |
| [`String.prototype.{trimStart,trimEnd}`](https://github.com/tc39/proposal-string-left-right-trim) | 没有 |
| [`Array.prototype.{flat,flatMap}`](https://github.com/tc39/proposal-flatMap) | 没有 |
| [`String.prototype.matchAll`](https://github.com/tc39/String.prototype.matchAll) | 没有 |
| [`import()`](https://github.com/tc39/proposal-dynamic-import) | 对 |
| [`Promise.allSettled`](https://github.com/tc39/proposal-promise-allSettled) | 没有 |
| [可选链式](https://github.com/tc39/proposal-optional-chaining) | 对 |
| [Nullish 连接操作员](https://github.com/tc39/proposal-nullish-coalescing) | 对 |

页:1 [`@babel/plugin-proposal-async-generator-functions`](https://www.npmjs.com/package/@babel/plugin-proposal-async-generator-functions) 依赖 `Symbol.asyncIterator`,AVA不为您多填充.

## 常见问题

### @ava/babel 是什么？

AVA 的 Babel 供应商

### 如何安装 @ava/babel？

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

### @ava/babel 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/ava\_\_babel 是否存在。

### @ava/babel 需要什么版本的 Node\.js？

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

### @ava/babel 可以商用吗？

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

### @ava/babel 的下载量有多少？

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

### @ava/babel 还在维护吗？

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

