27

Asp.Net MVC4バンドル&ミニフィーチャー機能で、jsファイルを縮小する方法をカスタマイズする方法はありますか?Mvc4バンドリング、ミニ化、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

グローバル名前空間汚染は私がすぐに取り組むべき別の問題でした。古典的な "一石の2羽の鳥"。ありがとうございました。 –

+0

ありがとうございました!それは私のために働いた:) –

1

をあなたはまだ何を縮小化するために、何でない(あるいはあなたがですでに縮小さバージョンを含める場合を制御したい場合プラグインのベンダーが)ちょうど2つのバンドルを宣言し、唯一のあなたの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することはできません"Ang-DI構文で、変数名が難読化されているのを気にしないで、BundleTransfomerとYui Js minifierを使用しました - nuget経由で利用可能:

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

細分化/難読化に対して非常に細かい制御を行います。角度のある世界では、yui web.configセクション内のobfuscateJavascriptをfalseに設定するだけです。

関連する問題