我在一個ASP.Net應用程序中使用這個與BundleTransformer
from nuget和System.Web.Optimisation
。根據各種文檔,minifier應該「刪除無法訪問的代碼」。我知道這不像谷歌封閉(我目前無法使用)那麼具有侵略性,但我甚至無法得到最簡單的例子,例如:MicrosoftAjaxMinifier似乎沒有刪除「無法訪問的代碼」
function foo() {
}
其中foo
不從任何地方調用。我可以理解這樣的觀點,即說這可能是一個導出的函數,但是我看不出一種區分它的方法。我所有的JS代碼都是串聯的,所以如果我能找到正確的開關,它可以確定是否需要該功能。
我發現忽略不必要的代碼的唯一方法是在web.config中使用debugLookupList
屬性BundleTransformer
但這看起來像是一個大錘來破解一個螺母。它不是非常精細。
有沒有人有如何編寫所謂的「不可達代碼」的例子,這個縮小器將識別?
下面就來test online
這是一個公平點,你的例子上面跳過privateFunction。我想我太希望它會追查通話圖。我的代碼是從TypeScript生成的,因此全部使用模塊模式。根據上面的示例(我已經爲我的問題添加了測試網址),無論我使用的是exports關鍵字,我都無法指望它刪除這些函數。我希望看到這些出口是否被任何人叫到,但我認爲它更像你的例子。一旦函數處於全局範圍內,就無法清理。 – cirrus