问题描述
我有一个主要的 react 发布包(在本地克隆),它配置了 Babel 版本 6
"devDependencies" {
"babel-core": "6.26.3","babel-eslint": "10.0.3","babel-jest": "21.0.0","babel-loader": "7.1.5","babel-preset-es2015": "6.24.1","babel-preset-react": "6.24.1"
}
使用以下配置
{"presets": ["es2015"] }
和 Webpack 配置:
...
rules: [
{
test: /\.js$/,loader: 'babel-loader'
},...
我正在开发一个未发布的使用 Babel 版本 7 的 react 库组件包
"devDependencies" {
"@babel/cli": "^7.12.1","@babel/core": "^7.13.10","babel-core": "7.0.0-bridge.0","@babel/preset-env": "^7.13.10","@babel/preset-react": "^7.12.13"
}
"resolutions": {
"babel-core": "7.0.0-bridge.0"
},
使用以下配置:
{ "presets": ["@babel/preset-react","@babel/env"] }
我已将 react 库组件包安装到主包中,但出现以下错误:
SyntaxError: Unexpected token (6:8)
4 | const Button = () => {
5 | return (
> 6 | <Button>
我该如何解决这个问题?
解决方法
在 Babel 6 中,.babelrc
配置专门应用于包含 .babelrc
的子目录中的文件。由于您的组件库是通过 npm link
加载的,因此它位于同级目录中,因此 .babelrc
不适用于它。
Babel 6 中唯一的选项是将您的 Babel 配置放在 webpack.config.js
文件中,例如
rules: [
{
test: /\.js$/,loader: 'babel-loader',options: {
"presets": ["es2015","react"]
}
},
另请注意,此配置必须包含 babel-preset-react
。您的库还具有 Babel 作为依赖项并具有 .babelrc
这一事实不会影响您的整个应用程序构建过程。
请注意,如果您的主应用程序使用 Babel 7,您应该将主应用程序 .babelrc
重命名为 babel.config.json
,这与放置webpack.config.js
中的配置,实际上 babel.config.json
是在 Babel 7 中添加的,在很大程度上是为了解决您遇到的问题。