@ava/babel

中文文档
2.0.0发布于 2021/07/04MIT近 30 天下载 5.1万

AVA 的 Babel 供应商

中文使用文档
文档目录14 节
  1. 启用 Babel 支持
  2. 自定义 AVA 如何编译您的测试文件
  3. 编译额外文件
  4. 重置 AVA 的缓存
  5. 添加额外的扩展
  6. 让 AVA 跳过您的项目 Babel 选项
  7. 禁用 AVA 阶段-4 预设
  8. 保存 ES 模块语法
  9. 禁用增强功能
  10. 使用 Babel 多填充器
  11. 编译来源
  12. Web 包装别名
  13. @ava/babel/stage-4
  14. 支持的提案

@ ava/ babel (帮助)

翻译: 法国语Name

添加数 贝贝 7 支助 阿富汗 这样您就可以在测试中使用最新的JavaScript语法. 我们利用我们 @ava/babel/stage-4 预设。 我们还使用第二个预设, @ava/babel/transform-test-files 启用 强化断言信息 发现不当使用 t.throws() 断言.

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

如果你在使用 Babel 来获取源文件, 那你也必须 配置源编译。 。 。 .

启用 Babel 支持

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

npm install --save-dev @ava/babel

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

package.json数字 :

{
    "ava": {
        "babel": true
    }
}

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

您可以在 package.json 或者说 ava.config.*例如,以下配置增加了对JSX语法的支持,以及 预设env。 。 。 .

package.json数字 :

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

全体 Babel 选项 允许在 testOptions 对象.

编译额外文件

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

package.json数字 :

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

重置 AVA 的缓存

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

$ npx ava reset-cache

添加额外的扩展

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

package.json数字 :

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

另见AVA的 extensions 选项。 。 。 .

让 AVA 跳过您的项目 Babel 选项

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

package.json数字 :

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

禁用 AVA 阶段-4 预设

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

package.json数字 :

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

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

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

保存 ES 模块语法

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

package.json数字 :

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

你必须使用 esm 模块,以便AVA仍然可以装入测试文件. 看我们的食谱的细节。 。 。 .

禁用增强功能

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

package.json数字 :

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

使用 Babel 多填充器

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

通过加载 贝贝的 polyfill 模块 您可以选择加入这些特性。 请注意, 这将改变环境, 这可能会影响您的程序的行为 .

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

package.json数字 :

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

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

编译来源

AVA 目前没有编译源文件 。 你只能装了 贝贝的 register 模块,将按需要汇编源文件.

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

package.json数字 :

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

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

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

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

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

Web 包装别名

Web 包装别名 可以用来提供一条捷径,来深入地筑巢或以其他方式提供不便的道路. 如果在源文件中已经使用化名,则需要确保您可以在测试文件中使用相同的化名.

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

package.json数字 :

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

@ava/babel/stage-4

带来希望 已完成ECMAScript提案 到AVA的测试和帮助文件.

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

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

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

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

支持的提案

提议支助
Array.prototype.includes没有
Object.values编号 :Object.entries没有
字符串粘贴没有
Object.getOwnPropertyDescriptors没有
在函数参数列表和调用中拖入逗号对
共享内存和漫画没有
提升模板文字限制没有
s (单位:千美元)dotAll(正则表达式的旗帜)对
RegExp 命名捕获组没有
RegExp 外观后面的星座没有
RegExp Unicode 属性逃逸没有
Promise.prototype.finally没有
同步迭代部分页:1
可选 catch 约束对
JSON 超级集没有
Symbol.prototype.description没有
Function.prototype.toString 订正没有
Object.fromEntries没有
结构良好 JSON.stringify没有
String.prototype.{trimStart,trimEnd}没有
Array.prototype.{flat,flatMap}没有
String.prototype.matchAll没有
import()对
Promise.allSettled没有
可选链式对
Nullish 连接操作员对

页:1 @babel/plugin-proposal-async-generator-functions 依赖 Symbol.asyncIterator,AVA不为您多填充.

版本与发布记录

@ava/babel 共发布 12 个版本,首次发布于 2019/10/26;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.0.0latest2021/07/045 年前
1.0.12020/02/096 年前
1.0.02020/01/186 年前
0.7.02020/01/066 年前
0.6.02020/01/056 年前
0.5.02020/01/056 年前

关于 @ava/babel 的常见问题

@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 和提交记录判断。