System.Web.Optimization заставляет имена аргументов функции оставаться неизменными для определенных функций

С ASP.NET связывание с ScriptBundle

function StartController($scope, $location, $rootScope) {}

превращается в

function StartController(n,t,i) {}

Однако, поскольку я использую AngularJs, чтобы внедрение зависимостей все еще работало, имена аргументов не должны изменяться при минимизации. Как я могу гарантировать, что $scope, $location и $rootScope сохранят эти имена с минимизацией через ScriptBundle, но разрешат переименование аргументов в других местах?

3 ответа

Решение

Это не то, что вы можете изменить во встроенных типах пакетов, так как в настоящее время мы не предоставляем никаких ручек, которые можно настроить в базовых классах преобразования. Лучший способ сделать это - написать собственный IBundleTransform, который выполняет минификацию, передавая соответствующие настройки, чтобы не переименовывать переменные.

Т.е. что-то вроде:

public class CustomTransform : IBundleTransform {
    public void process(BundleContext context, BundleResponse response) {
         response.Content = MyMinifier.MinifyWithoutRename(response.Content);
    }
}

BundleTable.Bundles.Add(new Bundle("~/bundles/mybundle", new CustomTransform());

Angular предоставляет способ борьбы с минификацией. Если вы определяете контроллер, вы можете переписать свой код следующим образом:

YOUR_APP_MODULE.controller('CONTROLLER_NAME', ['$scope', '$location', '$rootScope', function($scope, $location, $rootScope){
    // DO STUFF
}]);

На минификации это станет:

YOUR_APP_MODULE.controller('CONTROLLER_NAME', ['$scope', '$location', '$rootScope', function(n, t, i){
}]);

Вы можете сделать то же самое с другими угловыми компонентами.

Это работает с System.Web.Optimizations пакет Nuget 1.1

https://gist.github.com/zaus/7436601

(Я включил несколько других концепций по пути)

По сути, вам нужно написать новый BundleTransform/Minifier, который предоставляет CodeSettings так что вы можете изменить NoAutoRenameCollection,

Другие вопросы по тегам