1

MVC3 WebアプリのJS全体でロギングメソッド(console.logをラップするだけ)への呼び出しがたくさんあります。テストビルドと本番ビルドをビルドするときに、JavaScriptからそれらを削除したいと思います。

現在、バンドルとミニファイのnugetパッケージを使用して、JSを1つの大きなミニファイファイルにバンドルしてミニファイしていますが、ロギングメソッドへの呼び出しも削除してもらいたいと思います。

ロギングメソッドを空の関数に置き換えるメカニズムがあり、本番環境では機能しませんが、それでも呼び出され、さまざまな引数が渡されます。さらに、「大きな」文字列があります。渡され、それらを削除して、ファイルサイズを減らすことができます。

私の頭の中で理想的な解決策は、JavaScriptを何らかの方法で解析し、それらのメソッドの呼び出しを検出/削除することです。できれば、正規表現だけでなく、ある種のJavaScriptエンジンで。

いずれにせよ、本番環境で提供される最終的なJavaScriptで、ロギングメソッドへの呼び出しを削除したいだけです。誰かが私がこの追加の縮小をどのように達成するか知っていますか?

4

2 に答える 2

5

はい、IBundleTransformインターフェイスはこのシナリオ用に設計されています。RC ビットでは、次のように想定しています。

new Bundle("~/bundles/js", new LogRemoverTransform(), new JsMinify());

基本的に、バンドルを構築し、2 つの変換を連鎖させます。最初にログ メソッドを削除し、次に通常の縮小を実行します。RC の前は、 の中で構成を行う必要がありましたIBundleTransform

于 2012-06-15T22:58:06.817 に答える
0

最初に正規表現を介してロギング メソッドへの呼び出しを削除し、次にデフォルトのバンドルおよび縮小機能を呼び出すIBundleTransformの独自の実装を作成できます。呼び出しがかなり単純である限り、思いつくのは難しくありません。ただし、ロギング コードの呼び出し方法によっては、扱いにくい場合があり ます

たとえば、次のようなロギング呼び出し全体をキャッチする正規表現を構築するのはかなり難しいでしょう (私にとって)。

NS.log(function () { return "this is going to be hard to parse"; }());

しかし、そのようにログに記録しない限り、正規表現を書くのは難しくありません。

于 2012-06-04T22:23:59.397 に答える