如何在我们的mvc3 Web应用程序的prod版本中删除JS日志记录调用?

All*_*ice 1 javascript asp.net-mvc-3 bundling-and-minification

在我们的MVC3 Web应用程序中,我们对整个JS中的日志记录方法(只包装console.log)进行了大量调用,并且在构建测试和生产版本时我想从JavaScript中删除它们.

目前我们正在使用捆绑和缩小nuget包来捆绑和缩小我们的JS到一个大的缩小文件,但我想让它删除对日志记录方法的调用.

我们确实有一个机制可以用空函数替换日志记录方法,因此它们不会在生产中做任何工作,但仍会调用它们并传入各种参数.除此之外,还有"大"字符串传递,可以删除,减少文件大小.

在我看来,理想的解决方案是以某种方式解析JavaScript并检测/删除对这些方法的调用.优选地在某种JavaScript引擎中而不仅仅是正则表达式.

无论哪种方式,我只是希望在生产中提供的最终JavaScript中删除对我的日志记录方法的调用.有谁知道我如何完成这个额外的缩小?

Hao*_*ung 5

是的,IBundleTransform界面是为这种情况设计的.在RC位中这是我们设想的:

new Bundle("~/bundles/js", new LogRemoverTransform(), new JsMinify());
Run Code Online (Sandbox Code Playgroud)

基本上,您构造一个包并链接两个转换,首先剥离您的日志方法,然后运行正常的缩小.在RC之前,你必须在你的内部进行构图IBundleTransform.