7

我通过以下 .babelrc使用babel-preset-react-app :

{
  "presets": ["react-app"],
  "plugins": [
    "transform-es2015-modules-commonjs",
    "transform-async-generator-functions"
  ]
}

我需要覆盖babel-plugin-transform-runtime选项。我尝试通过以下方式安装插件并将其添加到 .babelrc:

{
  "presets": ["react-app"],
  "plugins": [
    ["babel-plugin-transform-runtime", {
      "helpers": false,
      "polyfill": false,
      "regenerator": false
    }],
    "transform-es2015-modules-commonjs",
    "transform-async-generator-functions"
  ]
}

但这对我不起作用。

有什么方法可以在不将整个预设复制并粘贴到我的 .babelrc 的情况下做到这一点?

4

1 回答 1

1

Babel 目前似乎不支持这些类型的覆盖(参见https://github.com/babel/babel/issues/8799)。幸运的是,我找到了解决方法babel-preset-react-app。有一个未记录的选项,useESModules

['react-app', { useESModules: false }]

这是一个babel-plugin-react-app适用于 node.js 的配置:

    presets: [
        ['react-app', { useESModules: false }],
        [
            '@babel/preset-env',
            {
                modules: 'commonjs',
                targets: {
                    node: 'current',
                },
            },
        ],
    ],

当然,babel-preset-react-app如果您使用create-react-app的是客户端捆绑包,那么使用是最有意义的。如果你不使用create-react-app,那么你可以考虑直接使用@babel/preset-react,在这种情况下你不需要担心覆盖useESModules设置。

于 2019-08-01T19:11:31.453 回答