27

방법을 사용자 정의하는 방법이 있습니까 Asp.Net MVC4 번들 & minification 기능 js 파일을 축소?Mvc4 번들링, minification 및 AngularJS 서비스

의미, 나는 완전히 축소를 해제하고 싶지는 않지만, "있는 그대로"AngularJs를 중단합니다.

일단 축소 된
function MyController($scope) { } 

,이된다 : AngularJS와 이후

는이 다음 컨트롤러에서 서비스를 주입하기위한 DI와 IOC의 접근 방식을 사용하여 문제가되지 않을 것이라고

function MyController(n) { } 

일반적으로,하지만 AngularJS와 매개 변수 이름을 사용하여 주입 할 서비스를 파악합니다. 따라서 $ scope는 $ scope로 유지되어야하며 각도 컨트롤러의 다른 매개 변수로 남겨 두어야합니다. 지역 변수와 같은 다른 모든 것은 정상적으로 축소되어야합니다.

Mvc4 축소를 구성하는 방법에 대한 명확한 문서를 찾을 수 없으며 뭔가 "실종 된 것 같습니다."

감사합니다.

+0

기술적으로는 http://stackoverflow.com/questions/13032721/system-web-optimization-making-function-argument-names-stay-the-same-for-certain의 복제본입니다. 대답은 의미가 있습니다. – drzaus

+0

또한이 질문은 http://stackoverflow.com/questions/17410012/customizing-net-4-5-bundler-minifier – drzaus

답변

45

실제로 AngularJS 코드를 "축소 안전"할 수 있습니다. 자세한 사항은 http://docs.angularjs.org/guide/di의 "종속성 주석"절에서하지만 짧은 설명, 전역으로 정의 컨트롤러 당신은 쓸 수 있습니다 :

MyController.$inject = ['$scope'];

전역으로 정의 컨트롤러가 글로벌 네임 스페이스를 오염된다 (자세한 내용은 this 참조)주의하시기 바랍니다 피해야합니다. 당신이 모듈 레벨에서 컨트롤러를 선언하면 당신은 축소를 안전뿐만 아니라 만들 수 있습니다

angular.module('mymodule', []).controller('MyController', ['$scope', function($scope){ 
//controller code goes here 
}]); 
+1

에 의해 중복되었습니다. 전역 네임 스페이스 오염은 곧 해결할 또 다른 문제였습니다. 고전적인 "하나의 돌을 가진 두 마리". 고맙습니다. –

+0

감사합니다 !!! 그게 나를 위해 일한 :) –

1

여전히 (작게를하고 무엇을하지 않는 것을 제어하려는 경우 또는 당신은에 의해 이미 축소 된 버전을 포함 할 경우 플러그인 공급 업체) 두 번들을 선언하고 만 BundleConfig.cs에 그들 중 하나 축소하세요 : 원하지 않는 분들을 위해

var dontMinify = new Bundle("~/bundles/toNotMinify").Include(
         "~/Scripts/xxxxx.js"); 
bundles.Add(dontMinify); 

var minify = new Bundle("~/bundles/toNotMinify").Include(
         "~/Scripts/yyyyyy.js"); 
minify.Transforms.Add(new JsMinify()); 
bundles.Add(minify); 
+3

당신이 반대로 의미한다고 생각 - 당신은 명시 적으로 축소 변환을 제거해야'dontMinify.Transforms.Clear()' – drzaus

1

를 /은 "축약 안전을 작성하는 arsed 수 없습니다 "angle-DI 구문을 사용하고 난독 화되는 변수 이름에 신경 쓰지 않고 Yui Js 미니 화기와 함께 BundleTransfomer를 사용했습니다 - nuget을 통해 사용 가능 :

Install-Package BundleTransformer.Core 
Install-Package BundleTransformer.Yui 

미세화/난독화에 대해 매우 세분화 된 제어를 제공합니다. 각도 세계에서는 yui web.config 섹션 내의 obfuscateJavascript를 false로 설정하면됩니다.