У меня есть файл JavaScript с этой упрощенной формой:
var MainObj = (function($) {
function func1() {} // <-- minification renames to c()
function func2() {
function func3() {} // <- minification renames to c()
func1(); // <-- minification calls c() and hits func3 instead of func1
}
}
Я добавил этот файл JavaScript в ScriptBundle в ASP.NET, и полученный минимизированный файл столкнулся. И func1
, и func3
были переименованы в одно и то же имя функции c
. Так что при звонке на func1
я в итоге позвонил func3
.
Я исправил эту проблему, явно вызвав MainObj.func1()
. Если не считать рефакторинга всего нашего кода, как мы можем сказать сборщику не создавать такого рода коллизии?
Я посмотрел на страницу Microsoft по комплектации и не увидел вариантов для настройки минификации.