Laravel Mix 是否支持 ES8?

Does Laravel Mix support ES8?

我正在用 Laravel 混合编译我的 javascript 文件,由于我对 Babel 和 package.json 不是很了解,我想问一下 Laravel Mix支持ES8,特别是async/await?

如果我尝试,我无法判断 Mix 是否正在将 async/await 转译为 ES5,或者 async/await 是否仅受我的浏览器支持,这是最新版本。我仍然希望将其转换为 ES2015,以便该应用程序仍可在仅支持 ES5 的浏览器上运行。

异步/等待与Laravel混合:

如果您使用 Laravel 开箱即用并使用异步和等待,您会收到以下错误消息:

Uncaught ReferenceError: regeneratorRuntime is not defined

但是LaravelMix使用Babel来支持ES2015。如果需要,我们可以自定义编译。

要让 async / await 正常工作,请将文件 .babelrc 添加到您的根目录,内容如下:

{
  "presets": ["es2015", "stage-3"],
  "plugins": [
    "transform-runtime"
  ]
}

并安装所需的 npm 包:

npm install babel-preset-es2015 babel-preset-stage-3 babel-plugin-transform-runtime --save-dev

重要的(导致错误的)是 transform-runtime 插件。 Laravel Mix 未附带它,但您需要它才能使异步/等待功能正常工作。

ES8:

正如您在上面看到的,您可以在 Babel 中使用不同的预设阶段。通过它们,您可以使用 ES8 或更高版本中包含的功能。例如 stage-3 带来了异步/等待功能。

他们的网站上有 overview of the stages