【问题标题】:Bundle ES6 files without transpilation捆绑 ES6 文件而不进行编译
【发布时间】:2017-10-08 05:18:27
【问题描述】:

我可能遗漏了一些明显的东西,但在发布此内容之前我进行了很多搜索,老实说,我对没有找到解决方案感到震惊。我想将我的 ES6 文件捆绑到一个模块中,但是由于我用于测试的浏览器支持 ES6,因此实际上并不想转译任何东西。我不知道该怎么做。我正在使用 webpack,并看到一个建议在我的 .babelrc 文件中简单地省略预设和插件,但是我收到一个错误,说对象扩展行有一个意外的标记(扩展运算符)。如何简单地遍历导入/导出路径以捆绑代码但将其保留为 ES6?非常感谢提前!

【问题讨论】:

  • 您确定您使用的浏览器支持扩展运算符吗?看看this,它提到了哪些浏览器实际上支持它,并且有一些示例你可以在没有webpack 开销的情况下尝试,这样你就可以确定你的问题出在哪里
  • object spread 不是 ES6!因此问题。您可以使用 Rollup,但它会 have problems with object spread too - 因为它不符合规范。至少你仍然需要 Babel 来修复对象传播。
  • estus,我知道对象传播不是 ES6,但我的目标只是在不转译的情况下连接我的所有文件。忽略 ES6 部分 :) 我要试试@Prashant 的解决方案。不过谢谢你的回复! Yoav,也谢谢你 :) 我很肯定我的浏览器支持它:const obj = { a:4, b: 2 } const other = { ...obj, c: 3 } other // {a: 4, b: 2, c: 3}

标签: javascript webpack ecmascript-6


【解决方案1】:

使用babel-preset-env

并且,针对您的特定浏览器进行目标转换。如果该浏览器支持所有ES6 功能,则不会被转译为ES5

例如

您的.babelrc 可能看起来像

{
  "presets": [
    ["env", {
      "targets": {
        "chrome": 60
      }
    }]
  ]
}

您还可以针对多个浏览器,以便您的代码可以在任何地方运行。

{
  "presets": [
    ["env", {
      "targets": {
        "chrome": 60,
        "browsers": ["last 2 versions", "safari 7"]
      }
    }]
  ]
}

【讨论】:

  • 非常感谢!这比我预期的要容易得多:)
【解决方案2】:

rollup.js 是一个 ES6 模块打包器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2016-01-14
    • 2016-11-16
    相关资源
    最近更新 更多