我们正在更新API,Babel的Henry Zhu提醒我有一个名为“babel-preset-env”的预设可以替代“babel-preset-es2015”和“babel-preset-es2018”。
现在,我遇到了困难,不知道如何处理一切最简单的方法。
我们的API使用node v8.x和async/await,原生的promise。
我想要spread操作符。
我想要pipeline操作符。
我想要import/export语法。
我想支持Jest。
我喜欢babel-node将API转译到内存中的方式。
如果我展示一下我们当前配置的位置,这将更容易:
.babelrc
现在,我遇到了困难,不知道如何处理一切最简单的方法。
我们的API使用node v8.x和async/await,原生的promise。
我想要spread操作符。
我想要pipeline操作符。
我想要import/export语法。
我想支持Jest。
我喜欢babel-node将API转译到内存中的方式。
如果我展示一下我们当前配置的位置,这将更容易:
.babelrc
{
"presets": [
"env",
{
"targets": {
"node": "current"
}
},
"jest"
]
}
package.json
{
"scripts": {
"test": "node --harmony-async-await node_modules/jest/bin/jest.js",
"start:local": "NODE_ENV=localhost npm run babel-node -- warpcore/server.js",
"start": "npm run babel-node -- warpcore/server.js",
"babel-node": "babel-node --presets=es2015,stage-2"
},
"dependencies": {
"babel-polyfill": "^6.23.0"
},
"devDependencies": {
"babel-cli": "^6.24.1",
"babel-core": "^6.25.0",
"babel-eslint": "^7.2.3",
"babel-jest": "^20.0.3",
"babel-preset-env": "^1.6.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2018": "^1.0.0",
"babel-preset-stage-2": "^6.24.1",
"jest": "^20.0.4"
},
"jest": {
"testURL": "http://localhost:8080",
"testEnvironment": "node"
}
}
我不确定这些东西应该如何组织才能最好地实现上面的任务清单。
我应该做什么改变?
- 我认为 babel-node 脚本需要进行更改
- 我怀疑我可以删除其中一些包
- 我怀疑 .babelrc 文件不是最佳配置
modules: 'commonjs'
,而Babel 7的preset-env则没有。但是为什么jest需要commonjs模块呢?无论我如何阅读有关commonjs、amd、umd等之间差异的文章,我都从未真正理解过这一部分。是否有一个简单的解释,可以说明为什么jest绝对需要commonjs? - Dac0d3rrequire
函数来处理模拟依赖项,所以它无法处理import
语句。此外,在非实验性的Node环境中还不支持import
,因此会出现语法错误。 - sepehr