【问题标题】:How can I compile Angular libraries to ES2016?如何将 Angular 库编译为 ES2016?
【发布时间】:2020-10-20 00:44:43
【问题描述】:

我决定不再支持旧版浏览器并放弃对 ES5 编译/polyfills 的支持。

我将 Angular 项目代码编译为 ~85% 的覆盖率

"compilerOptions": {
    "target": "es2016",
    "module": "es2020",
    "lib": [
        "es2019",
        "dom"

这些选项控制项目的代码。

但是,Angular 库编译为 ES2015。

我们如何将项目的 VENDOR 包编译成 ES2016/17/18/19/20?

【问题讨论】:

  • 如果你打算使用 ES2020 模块语法,为什么不以 ES2020 为目标呢? ES2016(Array.prototype.includes 和指数语法)中添加的内容不足以保证解决问题(IMO)。 ES2020 为您提供可选的链接和无效合并。
  • 虽然kangax.github.io/compat-table/esnext es2016 看起来很安全,但它看起来覆盖率很差。不管怎样,你会怎么做?
  • 您发送的链接是针对“ESNext”的,这是通常未实施的提案(第 3 阶段提案除外)。你想看看2016+ which is where ES2020 is。除了 IE11 和 Edge (Chakra) 等过时的浏览器以及 Firefox 的 ESR 版本之外,它具有广泛的支持。就个人而言,我尝试在targetmodulelib 中保持我的ES 版本相同。我选择哪个版本取决于我所服务的客户以及他们的风险承受能力。
  • 您找到解决方案了吗?
  • @Dennis 不,但实际上这个词是 Angular 团队正在做类似的事情,但目前没有办法为 Angular 供应商文件执行此操作。我们似乎能做的就是使用差异加载来仅为旧浏览器加载 polyfill。我认为在团队为我们提供解决方案之前,我们会陷入困境。也许随着 Webpack 5 的更新。

标签: angular typescript ecmascript-6 ecmascript-2016


【解决方案1】:

根据这个stackoverflow帖子ES6 as the typescript target compiler option for angularjs or angular2

看来"target": "es6" 会完成你的任务。

【讨论】:

  • 感谢您的回答。但是,这只适用于您的项目代码。我将使用文档链接更新我的问题。
猜你喜欢
  • 1970-01-01
  • 2017-05-23
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 2016-12-23
相关资源
最近更新 更多