Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在mvc3 web应用程序的prod构建中删除JS日志调用?_Javascript_Asp.net Mvc 3_Bundling And Minification - Fatal编程技术网

Javascript 如何在mvc3 web应用程序的prod构建中删除JS日志调用?

Javascript 如何在mvc3 web应用程序的prod构建中删除JS日志调用?,javascript,asp.net-mvc-3,bundling-and-minification,Javascript,Asp.net Mvc 3,Bundling And Minification,我们有很多对日志记录方法的调用,这些方法只是将console.log包装在我们的MVC3 web应用程序的整个JS中,我想在构建测试和生产版本时将它们从JavaScript中删除 目前,我们正在使用将JS打包并缩小为一个大的缩小文件,但我希望它也能删除对日志方法的调用 我们确实有一种机制,用空函数替换日志记录方法,这样它们就不会在生产环境中执行任何工作,但仍然会调用它们并传入各种参数。除此之外,还传递了一些大字符串,这些字符串可以删除,从而减少了文件大小 在我看来,理想的解决方案是以某种方式解析

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

目前,我们正在使用将JS打包并缩小为一个大的缩小文件,但我希望它也能删除对日志方法的调用

我们确实有一种机制,用空函数替换日志记录方法,这样它们就不会在生产环境中执行任何工作,但仍然会调用它们并传入各种参数。除此之外,还传递了一些大字符串,这些字符串可以删除,从而减少了文件大小

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


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

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

例如,我很难构建一个能够捕获整个日志调用的正则表达式,如下所示:

NS.logfunction{return这将很难解析;}


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

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

例如,我很难构建一个能够捕获整个日志调用的正则表达式,如下所示:

NS.logfunction{return这将很难解析;}

但是,只要您不这样记录日志,编写正则表达式就不难。

是的,IBundleTransform接口就是为这种情况设计的。在RC bits中,以下是我们的设想:

new Bundle("~/bundles/js", new LogRemoverTransform(), new JsMinify());
基本上,您构建一个bundle并链接两个转换,首先剥离日志方法,然后运行正常的缩小。在使用RC之前,您必须在IBundleTransform内部进行合成。

是的,IBundleTransform接口就是为这种情况设计的。在RC bits中,以下是我们的设想:

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

基本上,您构建一个bundle并链接两个转换,首先剥离日志方法,然后运行正常的缩小。在使用RC之前,您必须在IBundleTransform内部进行合成。

看看这里:非常好,看起来非常有前景。我必须彻底调查Valamas嘿,预处理器的东西很好用,你能把它作为一个答案发布出来吗,我会接受的?谢谢,但你应该删除这个问题。这不是我的回答。我发现一件有趣的事情是,这种预处理器类型的东西被添加到了MicrosoftAJAXminifier中。我不知道他们在iBundletTransform工作中使用了与MVC4相同的缩小器。从技术上讲,这个问题有些不同,因为我特别感兴趣的是新的捆绑和缩小功能,而不是ajax缩小器。由于新的东西可能会更受欢迎,并且在搜索中出现更多,我将继续并留下这个问题。看看这里:非常好,看起来非常有希望。我必须彻底调查Valamas嘿,预处理器的东西很好用,你能把它作为一个答案发布出来吗,我会接受的?谢谢,但你应该删除这个问题。这不是我的回答。我发现一件有趣的事情是,这种预处理器类型的东西被添加到了MicrosoftAJAXminifier中。我不知道他们在iBundletTransform工作中使用了与MVC4相同的缩小器。从技术上讲,这个问题有些不同,因为我特别感兴趣的是新的捆绑和缩小功能,而不是ajax缩小器。由于新的东西可能会更受欢迎,并且在搜索中出现更多,我将继续并留下这个问题。哇,太酷了!你做过捆绑吗?如果是的话,谢谢你,做得很好!很好的工作,我喜欢我们现在可以把转换作为nuget软件包的方式哇,太酷了!你做过捆绑吗?如果是的话,谢谢你,做得很好!干得好,我喜欢我们如何将转换作为nuget软件包 W