我在一个ASP.Net应用程序中使用这个与BundleTransformer
from nuget和System.Web.Optimisation
。根据各种文档,minifier应该“删除无法访问的代码”。我知道这不像谷歌封闭(我目前无法使用)那么具有侵略性,但我甚至无法得到最简单的例子,例如:MicrosoftAjaxMinifier似乎没有删除“无法访问的代码”
function foo() {
}
其中foo
不从任何地方调用。我可以理解这样的观点,即说这可能是一个导出的函数,但是我看不出一种区分它的方法。我所有的JS代码都是串联的,所以如果我能找到正确的开关,它可以确定是否需要该功能。
我发现忽略不必要的代码的唯一方法是在web.config中使用debugLookupList
属性BundleTransformer
但这看起来像是一个大锤来破解一个螺母。它不是非常精细。
有没有人有如何编写所谓的“不可达代码”的例子,这个缩小器将识别?
下面就来test online
这是一个公平点,你的例子上面跳过privateFunction。我想我太希望它会追查通话图。我的代码是从TypeScript生成的,因此全部使用模块模式。根据上面的示例(我已经为我的问题添加了测试网址),无论我使用的是exports关键字,我都无法指望它删除这些函数。我希望看到这些出口是否被任何人叫到,但我认为它更像你的例子。一旦函数处于全局范围内,就无法清理。 – cirrus