我应该通过 .babelrc 还是 WebPack 配置 Babel?

J W*_*uck 2 reactjs webpack babeljs

在我的React项目中,webpack.config.js 引入了如下的提案类属性:

...
module: {
  rules: [
    {
      test: /\.jsx?$/,
      exclude: /(node_modules|bower_components)/,
      use: {
        loader: 'babel-loader',
        query: {
          presets: ['@babel/react', '@babel/preset-env'],
          plugins: ['@babel/proposal-class-properties']
        }
      },
    }
...
Run Code Online (Sandbox Code Playgroud)

通过包含,@babel/proposal-class-properties我可以从我的 React 组件等中删除构造函数。

然而,该文件显示plugin-proposal-class-properties.babelrc如下(并没有提及webpack.config.js在所有):

{
  "plugins": ["@babel/plugin-proposal-class-properties"]
}
Run Code Online (Sandbox Code Playgroud)

而我的.babelrc根本不包含任何插件:

{
  "presets": [
    ["@babel/env", {
      "modules": false
    },
    "@babel/preset-env"]
  ]
}
Run Code Online (Sandbox Code Playgroud)

将插件(例如proposal-class-properties)包含在webpack.config.js与将它们放入相比之间是否有任何有效区别.babelrc

Yoa*_*osh 6

可以通过.babelrc或者通过babel-loaderwebpack中的配置来配置babel 。它们的工作原理完全相同。

但是,我建议仅.babelrc用于配置 babel。这样它也可以在您运行测试时工作,这些测试通常不通过 webpack,因此不会有 babel 的 webpack 配置。

.babelrc:

{
  "presets": ["@babel/preset-env"]
  "plugins": ['@babel/plugin-proposal-class-properties', {'loose': true}]
}
Run Code Online (Sandbox Code Playgroud)