@ 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 编译,这个已经解决了.
支持的提案
页:1 @babel/plugin-proposal-async-generator-functions 依赖 Symbol.asyncIterator,AVA不为您多填充.