如何在 mvc3 Web 应用程序的生产版本中删除 JS 日志记录调用
How to remove JS logging calls in our prod build of our mvc3 web app?
我们在MVC3 Web应用程序中的整个JS中都对日志记录方法(只是包装控制台.log)进行了大量调用,我想在构建测试和生产版本时将它们从JavaScript中删除。
目前,我们正在使用捆绑和缩小 nuget 包将我们的 JS 捆绑和缩小到一个大的缩小文件中,但我也想让它删除对日志记录方法的调用。
我们确实有一种机制,用空函数替换日志记录方法,这样它们就不会在生产中做任何工作,但它们仍然被调用并传入各种参数。 最重要的是,有传递的"大"字符串,可以删除这些字符串,从而减小文件大小。
在我看来,理想的解决方案是以某种方式解析 JavaScript 并检测/删除对这些方法的调用。 最好是在某种JavaScript引擎中,而不仅仅是正则表达式。
无论哪种方式,我都只想在生产环境中提供的最终 JavaScript 中删除对日志记录方法的调用。 有谁知道我将如何完成这个额外的缩小?
是的,IBundleTransform
接口就是为这种情况设计的。 在RC位中,这是我们的设想:
new Bundle("~/bundles/js", new LogRemoverTransform(), new JsMinify());
基本上,你构造一个捆绑包并链接两个转换,首先剥离你的日志方法,然后运行正常的缩小。 在RC之前,您必须在IBundleTransform
内进行合成。
您可以编写自己的 IBundleTransform 实现,该实现首先通过正则表达式删除对日志记录方法的调用,然后调用默认的捆绑和缩小功能。 只要您的通话相当简单,就应该不难想出。 不过,这可能会变得棘手,具体取决于您调用日志记录代码的方式。
例如,(对我来说)构建一个正则表达式来捕获整个日志记录调用是相当困难的,如下所示:
NS.log(function () { return "this is going to be hard to parse"; }());
但是,只要你不那样记录,它应该不是一个难以编写的正则表达式。
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 从生产版本的javascript代码中删除断言
- 索引数据库删除数据库不会重置版本
- 如何在 mvc3 Web 应用程序的生产版本中删除 JS 日志记录调用
- 删除网站的移动版本的标记部分
- 从网址中删除网络罐子版本
- 无法在 IE8 及更低版本中使用 jQuery 添加/删除类
- 根据浏览器版本删除所有样式
- Javascript:检测是否缓存了请求的文件,如果存在较新版本,则删除缓存
- 为什么不't较新版本的节点从请求主体中删除__proto__
- Angular:删除页面打印版本的ng隐藏/显示
- 如何用仅使用javascript的IE8及更低版本的CSS文件替换或删除任何特定的CSS属性
- EXTJS:Sencha CMD生产版本不会删除console.log语句
- 删除ie8及更早版本的JS和CSS文件
- 删除PHP中JSON数组的索引,创建字符串版本的索引
- 如何删除IndexedDB旧版本的数据库由js
- 是否可以从jsperf中删除损坏的版本?
- JavaScript Regex从字符串中删除版本
- 从GMapPanel版本3中删除标记.ExtJS