繁体   English   中英

ASP.NET Core BundleMinifier 在缩小后删除异步修饰符

[英]ASP.NET Core BundleMinifier removes async modifier after minification

我将bundleconfig.json添加到 ASP.NET Core 应用程序。 它具有以下结构:

[
  {
    "outputFileName": "wwwroot/js/main.min.js",
    "inputFiles": [
      "wwwroot/js/scripts/first.js",
      "wwwroot/js/scripts/second.js"
    ],
    "minify": {
      "enabled": true,
      "renameLocals": true
    },
    "sourceMap": false
  }
]

两个脚本都已缩小并合并到main.min.js 但在缩小后,所有async修饰符都已从结果脚本中删除。

功能如

async function foo() {
  await /* some promise */;
}

已经变成:

function foo() {await /*some promise*/;}

如何避免删除async修饰符?

我重现了这个问题,并试图缩小一个使用ES6 specifications及更高版本的简单 js 文件。

测试.js

async function foo() {
    await bar();
}
async function bar() {
    for (var i = 0; i < 10; i++) { // do some work
    }
}

然后我尝试使用Bundler 和 Minifier工具缩小文件,然后抛出此错误:

在此处输入图片说明

这意味着Bundler 和 Minifier 不支持 ES6 规范及更高版本。

为了确认,我开始在Github 中搜索这个问题,我发现了这些相同的行为

我可以肯定地说这是Transpilers问题

转译器或源到源编译器是读取以一种编程语言编写的源代码并生成以另一种语言编写的等效代码的工具。

最常见和使用最广泛的一种是TypeScript

在某些情况下, TypeScript会将ES6及更高版本转换为ES5

例如:如果您将 Target 设置为ES6ES2015它会转换为ES5 但是,如果您的目标是ES2020则不会转译您的代码。

在末尾

  • BundlerMinifier 使用 NUglify 来执行 javascript 代码缩小,所以没有办法通过使用 Bundler 和 Minifier 来缩小 ES6 和更高版本的代码。 除非,作者决定支持它。
  • 您遇到了 Transpile 问题(例如:ES6 到 ES5)。
  • Bundler & Minifier不会删除诸如async类的未知关键字,但会引发错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM