1

在我们的 MVC3 Web 应用程序的整个 JS 中,我们有很多对我们的日志记录方法(只是包装 console.log)的调用,我想在我们构建测试和生产构建时从 JavaScript 中删除它们。

目前我们正在使用捆绑和缩小 nuget 包将我们的 JS 捆绑和缩小到一个大的缩小文件中,但我希望它也能删除对日志记录方法的调用。

我们确实有一种机制可以用空函数替换日志记录方法,因此它们在生产中不会做任何工作,但它们仍然被调用并传入各种参数。除此之外,还有“大”字符串已通过并且可以删除那些,从而减小文件大小。

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

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

4

2 回答 2

5

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

new Bundle("~/bundles/js", new LogRemoverTransform(), new JsMinify());

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

于 2012-06-15T22:58:06.817 回答
0

您可以编写自己的IBundleTransform实现,首先通过正则表达式删除对日志记录方法的调用,然后调用默认的捆绑和缩小功能。只要您的电话相当简单,就应该不难想出。不过,这可能会变得很棘手,具体取决于您如何调用日志记录代码。

例如,构建一个能够捕获整个日志调用的正则表达式(对我来说)是相当困难的,如下所示:

NS.log(function () { return "this is going to be hard to parse"; }());

但是,只要您不那样记录,编写正则表达式应该不难。

于 2012-06-04T22:23:59.397 回答