【问题标题】:How to remove console.log from js files using MVC.NET Bundle config file如何使用 MVC.NET Bundle 配置文件从 js 文件中删除 console.log
【发布时间】:2017-10-03 11:51:51
【问题描述】:

我当前的捆绑配置连接所有脚本文件并将其缩小并生成单个文件。但没有从 js 文件中删除 console.log 行,如何添加配置以删除 console.log() 文件中的行。我当前的配置设置是

       bundles.Add(
            new Bundle(
                "~/Scripts/js-bundle",
                new IBundleTransform[] {new JsMinify() }).Include(
            "~/Scripts/script1.js",
            "~/Scripts/script2.js",
            "~/Scripts/script3.js"))

我尝试添加 LogRemoverTransform(),但出现了一些错误

【问题讨论】:

标签: javascript asp.net-mvc minify


【解决方案1】:

您需要通过实现IBundleTransform 创建自己的Bundle Transformation。您可以使用this regex (borrowed from this question) 获取console.logconsole.info 等的实例并将它们替换为空字符串。

public class LogRemoverTransform : IBundleTransform
{
    public void Process(BundleContext context, BundleResponse response)
    {
        var compiled = string.Empty;
        var pattern = "console.(log|debug|info|warn|error|assert|dir|dirxml|trace|group|groupEnd|time|timeEnd|profile|profileEnd|count)\\((.*)\\);?";

        foreach (var file in response.Files)
        {
           // read text from js file, and replace the the matched parts with empty string
            compiled += Regex.Replace(File.ReadAllText(HttpContext.Current.Server.MapPath(file.IncludedVirtualPath)), pattern, string.Empty);
        }

        response.Content = compiled;
        response.ContentType = "text/javascript";
    }
}

然后在你的BundleConfig:

bundles.Add(new Bundle("~/Scripts/js-bundle",  new LogRemoverTransform(), new JsMinify())
                  .Include("~/Scripts/script1.js",
                           "~/Scripts/script2.js",
                           "~/Scripts/script3.js"));

如果js 文件很大,请使用StreamReader 而不是File.ReadAllText()

【讨论】:

    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2014-08-18
    相关资源
    最近更新 更多