【问题标题】:Use Webpack to output es6?使用Webpack输出es6?
【发布时间】:2018-04-27 08:49:24
【问题描述】:

有没有办法使用 Webpack 打包所有 JavaScript 文件并将生成的 bundle.js 输出为 es6 文件,而不是 es5?那么,打包是 Webpack 的工作,但转换成 es6 真的是 Webpack 的工作吗?或者这是一些 Webpack 加载器的工作?或者我必须为此使用 babel 吗?

【问题讨论】:

  • 你需要使用 Babel 或其他编译器将 ES2015 编译为 ES5。

标签: webpack ecmascript-6


【解决方案1】:

webpack 5 可以生成 ES5 和 ES6/ES2015 代码。

默认配置会生成 ES2015。如果需要支持旧版浏览器(比如IE11),可以设置output.ecmaVersion: 5

https://webpack.js.org/migrate/5/#turn-off-es2015-syntax-in-runtime-code-if-necessary

【讨论】:

  • 从我刚才在webpack.js.org/migrate/5/…上看到的,推荐使用target: ['web', 'es5']来支持IE11等老版本浏览器。
  • 这肯定在 Webpack 5 过渡的某处被提及,但我在任何地方的文档中都找不到 ecmaVersion
【解决方案2】:

Webpack 仍然无法做到这一点。 这里有一张公开票 https://github.com/webpack/webpack/issues/2933

目前,如果你想捆绑 es6,最有希望的解决方案似乎是rollup

这篇文章也链接在 GitHub 上的讨论中,并提供了一个很好的概述

https://medium.com/webpack/webpack-and-rollup-the-same-but-different-a41ad427058c

【讨论】:

  • 什么? Webpack 多年来一直能够做到这一点。还是我错过了什么?我在一次运行中同时生成 es5 和 es6
  • @MathijsSegers 当我添加了一个有人为实现它而构建的插件时,我只能从 webpack 获得 es6 输出。我不知道 webpack 中有这个功能。汇总仍然不适合我。
  • webpack 默认不编译/转译任何东西。根据你的 loader 和他们的配置,webpack 输出的东西。最常用的 JS 是 babel,默认情况下我假设它会转译为 es5,因为它仍然是最常见的,但您可以轻松地将其配置为输出 es6。
  • @MathijsSegers 你能告诉我“轻松配置它以输出 es6”的方法吗?
  • 这取决于您的设置,lukas 链接的问题似乎与 webpack 的内部有关,而不是您的代码库本身,因为 webpack 的默认设置是按原样提供。当然,如果您使用 typescript,则需要将其转换为 javascript,或者您可以使用 babel 之类的库来转换为 es5 或一组 es6 等。默认情况下,webpack 不会对您的代码做任何事情,那一定是您或您的团队配置
猜你喜欢
  • 1970-01-01
  • 2016-11-12
  • 2018-02-10
  • 2017-05-20
  • 2018-08-19
  • 2016-06-29
  • 2016-10-30
  • 2021-11-21
  • 2018-01-15
相关资源
最近更新 更多