几天前我发布了一个问题,关于我在缩小包含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",
));