【发布时间】:2019-03-20 03:48:06
【问题描述】:
我很难将 Babel 配置为转译 IE11 可以理解的代码,特别是箭头函数。使用我的配置运行 npx webpack --mode=development 不会转换代码中的箭头函数:在生成的代码中的 eval() 语句中,我可以看到所有实例都未转换。
与this question 中引用的控制台输出不同,我没有提到“使用目标”或“使用预设”。我不知道这是否与使用npx webpack 而不是npm run build 有关。
这是我 package.json 的 Babel 部分:
{
// name, version etc. snipped
"devDependencies": {
"@babel/core": "^7.1.2",
"@babel/plugin-transform-async-to-generator": "^7.1.0",
"@babel/plugin-transform-es2015-arrow-functions": "^6.22.0",
"@babel/plugin-transform-es2015-modules-commonjs": "^6.26.2",
"@babel/preset-env": "^7.1.0",
"ajv": "^6.5.4",
"copy-webpack-plugin": "^4.5.2",
"eslint-plugin-jest": "^21.24.1",
"jest": "^23.6.0",
"jest-dom": "^2.0.4",
"webpack": "^4.20.2",
"webpack-cli": "^3.1.2"
},
"babel": {
"presets": [
[
"@babel/preset-env",
{
"targets": {
"ie": "11"
}
}
]
],
"env": {
"development": {
"plugins": [
"transform-es2015-arrow-functions",
"transform-es2015-modules-commonjs"
]
},
"test": {
"plugins": [
"transform-es2015-arrow-functions",
"transform-es2015-modules-commonjs"
]
}
}
}
}
我的webpack.config.js 看起来像:
const CopyWebpackPlugin = require("copy-webpack-plugin");
const path = require("path");
module.exports = {
entry: "./src/thing.js",
optimization: {
minimize: false
},
output: {
filename: "thing.js",
path: path.resolve(__dirname, "dist")
},
plugins: [
new CopyWebpackPlugin([
// snipped
])
]
};
我在这里阅读了关于 Babel 配置的其他问题,以及 babel-preset-env docs 和非常轻薄的 babel-plugin-transform-es2015-arrow-functions docs。 this very similar question 的答案(没有接受的答案)根本没有提到那个插件,有人建议使用 polyfill,这似乎涉及在你的实际代码中而不是在这个阶段加载一个库?
一般来说,我对使用 Webpack 非常陌生,不明白 "env"(在很多问题中提到)和 "@babel/preset-env" 之间有什么区别。或者实际上是前者的一般含义;如果您在文档导航中单击“env”,它会将您带到@babel/preset-env 的页面。
我做错了什么?
【问题讨论】:
-
你在使用github.com/babel/babel-loader吗?看起来你已经安装了 Babel,但实际上并没有在 Webpack 中启用它。
-
@loganfsmyth 我非常高兴地报告说不,我不是,并且解决了它。如果您将其作为答案提交,我会将其标记为已接受。
-
我要稍微发泄一下……在 Babel 文档中没有对此进行解释真的很烦人。只提到in the sentence“Babel 集成的用户,如 babel-loader 或 @babel/register 不太可能使用这些。”我现在知道,如果你是通过 Webpack 文档加载器来了解的,但是在 Babel 站点登陆时,我(一个学习者)碰壁了。如果有指向the Webpack loaders docs 的链接,它会节省很多令人沮丧的时间。
-
我们有一个“设置”顶级页面:babeljs.io/setup。 “Webpack”部分介绍了使用
babel-loader的步骤。 -
谢谢,这是有用的反馈。该页面已经有一段时间没有更新了,几乎可以肯定我们可以做一些其他的事情来让它对初学者更友好。
标签: javascript webpack babeljs