如何使用 MVC.NET Bundle 配置文件从 js 文件中删除 console.log
How to remove console.log from js files using MVC.NET Bundle config file
我当前的捆绑配置连接所有脚本文件并将其缩小并生成单个 file.but 并没有从 js 文件中删除 console.log 行,如何添加配置以从 files.my 当前配置设置中删除 console.log() 行
bundles.Add(
new Bundle(
"~/Scripts/js-bundle",
new IBundleTransform[] {new JsMinify() }).Include(
"~/Scripts/script1.js",
"~/Scripts/script2.js",
"~/Scripts/script3.js"))
我尝试添加 LogRemoverTransform() 但出现了一些错误
您需要通过实施 IBundleTransform
创建自己的 Bundle Transformation
。您可以使用 this regex (borrowed from this question) 获取 console.log
、console.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()
。
我当前的捆绑配置连接所有脚本文件并将其缩小并生成单个 file.but 并没有从 js 文件中删除 console.log 行,如何添加配置以从 files.my 当前配置设置中删除 console.log() 行
bundles.Add(
new Bundle(
"~/Scripts/js-bundle",
new IBundleTransform[] {new JsMinify() }).Include(
"~/Scripts/script1.js",
"~/Scripts/script2.js",
"~/Scripts/script3.js"))
我尝试添加 LogRemoverTransform() 但出现了一些错误
您需要通过实施 IBundleTransform
创建自己的 Bundle Transformation
。您可以使用 this regex (borrowed from this question) 获取 console.log
、console.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()
。