使用Babel配置next.js使其不转换异步功能

时间:2019-04-02 11:26:54

标签: async-await electron babel next.js

使用默认配置,下一步是指示Babel在客户端上将生成器用于我的异步函数。这使调试看起来似乎更具挑战性。如何禁用此行为?

我正在使用Electron应用程序,因此,我真的希望进行最少的转换以匹配Chromium运行时。

这是我"babel"中当前的package.json关键内容:

  "babel": {
    "presets": [
      [
        "next/babel",
        {
          "preset-env": {
            "targets": {
              "chromium": 73,
              "node": 11
            }
          },
          "transform-runtime": {
            "regenerator": false
          }
        }
      ]
    ]
  }

这里的结果是不包含再生器,但是它在Webpack生成的代码中崩溃。如果我取消禁用regenerator,则可以看到资产仍然仍在将async函数转换为生成器。

enter image description here

1 个答案:

答案 0 :(得分:2)

根据browsers list文档,我不认为chromium是有效的目标。尝试将"chrome": "73"作为目标。请注意,给定目标的值应该是字符串类型,而不是数字。

如果有一个您不想包含的插件,那么exclude键应让您blacklist a plugin,否则将根据您提供的目标环境使用该插件。 "exclude": ["@babel/plugin-transform-regenerator"]

问题提问者的笔记

这解决了我的问题。我通过以下方式获得了预期的结果:

{
  "presets": [
    [
      "next/babel",
      {
        "preset-env": {
          "targets": {
            "chrome": "73",
            "node": "11"
          }
        }
      }
    ]
  ]
}