VS2019 捆绑和缩小导致 ES6 代码错误,并且不会缩小



几天前我发布了一个问题,关于我在缩小包含ES6代码的代码时遇到的问题,一位评论者说问题在于缩小。有问题的代码是fat箭头函数和async/await。

我真的不想把async/await代码转换回promise,并且不得不长时间使用箭头函数

是否有办法让VS2019捆绑和缩小与ES6代码相处,如果没有,我可以使用什么来捆绑和缩小?我尝试了VisualStudio市场中的一个,但在关键字const时抛出了错误,并且在VS2022中不支持。

在非node.js环境中,最简单的方法似乎是使用TypeScript NuGet包,将ES6转换为ES5,然后捆绑/缩小它:

  • install NuGet packageMicrosoft.TypeScript.MSBuild
  • 添加tsconfig。{ "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments": false, "sourceMap": true, "target": "es5", "outDir": "bin/js" }, "include": [ "Content/ts/**/*" ], "compileOnSave": true }
  • 目录下的json文件
  • 添加/移动ES6 JS代码到。ts文件
  • include文件夹中的.ts文件将被翻译为outDir
  • 中的ES5 .js文件。
  • outDir中的文件添加到你的bundle中,就像其他ES5 JS文件一样

更多细节在这里:https://learn.microsoft.com/en-us/visualstudio/javascript/compile-typescript-code-nuget?source=recommendations&view=vs-2019

我为此挣扎了一段时间,发现最简单的方法是安装nugnlify nuget包。然后在bundlecconfig文件中,创建一个自定义类来使用nugnlify进行缩小——它与ES6兼容。

public class NUglifyMinifyTransform : IBundleTransform
{    
public void Process(BundleContext context, BundleResponse response)
{
// Get the response content
string content = response.Content;
// Use NUglify to minify the content
var minified = Uglify.Js(content);
// Set the minified content as the response content
response.Content = minified.Code;
}
}

然后按如下方式创建脚本包:

bundles.Add(new Bundle("~/bundles/Login", new IBundleTransform[] { new 
NUglifyMinifyTransform() }).Include(
"~/Scripts/test.js",    
));

相关内容

  • 没有找到相关文章

最新更新