18

私が C#/ASP.NET で取り組んでいる最近のプロジェクトには、かなり複雑な JavaScript ファイルと気の利いたスタイル シートがいくつかあります。もちろん、これらのスクリプト リソースのサイズが大きくなるにつれて、リソースを縮小し、Web ページをできるだけ軽量に保つことをお勧めします。デバッグ後に JavaScript リソースをコンプレッサーに手渡し、アプリケーションをデプロイする多くの開発者を知っています。

継続的インテグレーションの満足のいく世界でのソース管理と自動ビルドに関しては ( CruiseControl.NETに感謝します)。手の圧迫では十分ではありません。ソース管理を維持し、圧縮されたリソースを提供する唯一の方法は、JS/CSS ソースとその縮小版を別のディレクトリ構造に保持することです。次に、リソースのセットを 1 つだけ登録するか、コード ビハインドで他のセットを登録します。ただし、開発者が JS/CSS ソースに変更を加えた後、それを再圧縮して両方のバージョンをチェックインできなかった場合、コード行が同期していません。言うまでもなく、エレガントではありません。

ビルド アクションの後、asp の前に、ターゲット ディレクトリ内のすべての JavaScript および CSS リソースを見つけて圧縮する CC.NET タスク ブロック用のカスタム実行可能ファイル (まだ存在しない場合) を作成するとよいと考えています。ターゲットへの .net パブリッシュ。この方法では、開発者は JS および CSS ソースでのみ作業し、ユーザーは縮小されたリソースのみを取得します。

このタスクを既に実行しているアプリケーションはありますか?そうでない場合、ビルド サーバーにインストールして CC.NET を実行するには、どのような種類のリソースを探す必要がありますか?

(ここで見つけることができる最も近い質問は NAnt を必要としていましたが、これは私の場合のオプションではありません。)

編集: Dave Ward は、Visual Studioで自動的に縮小する方法に関する素晴らしい記事を彼のサイトに掲載しています。

4

3 に答える 3

24

MSBuildCommunityTasksプロジェクトには、Merge や JSCompress など、探していることを実行できる MSBuild タスクがいくつかあります。

これらを AfterBuild ターゲットの MSBuild プロジェクトに追加して、プロジェクトがビルドされるたびにプロジェクトがこのアクションを実行できるようにし、何も同期されないようにすることができます。その後、Web アプリケーションは圧縮されたバージョンを参照して実行できますが、開発者は完全なバージョンを編集します。

MSBuild コミュニティ タスク アセンブリを除いて、サーバーには何も必要ありません。このアセンブリを独自のソース ツリーに配置し、そこから参照することができます。CI ビルドは、ビルド時にそのアセンブリと必要なものすべてを取得する必要があります。

于 2008-11-10T19:48:37.000 に答える
4

MSBuild用の別のJS(およびCSS!)圧縮ライブラリ:

http://www.codeplex.com/YUICompressor

これは、JavaベースのYahoo!の.NETポートです。コンプレッサー

于 2009-01-09T05:33:06.507 に答える
1

完全な答えではありませんが、MVC4 を使用している場合は、これが新しい機能として組み込まれています。デバッグ構成を実行すると、コメントなどを含む個々のファイルが出力されますが、リリースに切り替えると、自動的にバンドルされ、縮小され、縮小されたファイルへのページ参照が変更されます。たとえば、jquery と独自の js に個別のバンドルをセットアップできます。これは、CSS および JS ファイルで機能します。

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

MVC4 が機能しない場合は、Nuget で次のような役立つパッケージを見つけることもできます。

https://www.nuget.org/packages?q=minify

于 2013-04-05T00:32:13.533 に答える