运行 Mocha 6 ES6 测试用Babel 7,怎么设置?

Running Mocha 6 ES6 tests with Babel 7, how to set up?

对于用 ES6/7 编写的库,我想将库编译(到 ES5)到 dist/ 文件夹。我还想 运行 这个库的测试(写在 ES6/7 中)。

我的开发依赖如下所示 (package.json):

"devDependencies": {
  "@babel/cli": "^7.4.4",
  "@babel/core": "^7.4.5",
  "@babel/preset-env": "^7.4.5",
  "@babel/register": "^7.4.4",
  "chai": "^4.2.0",
  "mocha": "^6.1.4",
  "sinon": "^7.3.2"
},

我的构建和测试脚本如下所示 (package.json):

"scripts": {
  "test": "mocha --require @babel/register",
  "build": "babel src -d dist --presets=@babel/preset-env"
},

运行 npm run build 效果很好。 dist/ 文件夹中填充了转译后的文件。

运行 npm run test 似乎不起作用 - 这是我的问题。

> mocha --require @babel/register

/Users/dro/Repos/lib/node_modules/yargs/yargs.js:1163
      else throw err
           ^

ReferenceError: regeneratorRuntime is not defined

最初我遇到导入错误,通过添加 .babelrc 文件解决了这个问题。

下面是我的 .babelrc 文件内容。

{
  "presets": ["@babel/preset-env"]
}

我正在阅读有关 regeneratorRuntime 的内容,这让我想到 this link about babel-polyfill 他们解释说我不需要那个 polyfill。

This will emulate a full ES2015+ environment (no < Stage 4 proposals) and is intended to be used in an application rather than a library/tool.

正确设置需要什么?


我没有使用 webpack。

使用 Mocha 和 Babel 7 在 ES6 中进行测试。看这里:https://dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43ei or http://jamesknelson.com/testing-in-es6-with-mocha-and-babel-6/

npm install --save @babel/runtime 
npm install --save-dev @babel/plugin-transform-runtime

然后,在 .babelrc 中添加:

{
    "presets": ["@babel/preset-env"],
    "plugins": [
        ["@babel/transform-runtime"]
    ]
}

看看 project documentation:

npm install --save-dev babel-register

在您的 package.json 文件中进行以下更改:

{
  "scripts": {
    "test": "mocha --require babel-register"
  }
}

某些功能需要 polyfill:

npm install --save-dev babel-polyfill
{
  "scripts": {
    "test": "mocha --require babel-polyfill --require babel-register"
  }
}