10

CIプロセスの一部としてJavaScriptファイルを縮小する方法を検討しています。これにより、縮小されていないファイルを開発で使用し、ステージングサーバーやライブサーバーにデプロイするときに自動的に圧縮することができます。

これはASP.NETサイト用です。Hudsonをビルドサーバーとして使用します。

私はGoogleClosureコンパイラに興味があり、この.Net MSBuild Google Closureコンパイラタスクに出くわしましたが、あまり広く使用されていないようです。Closureまたは代替のミニファイツールを使用して、MSBuildで使用するためのより良いオプションはありますか?

4

4 に答える 4

8

.NETベースのプロジェクトでは、しばらくの間ClosureCompilerを使用してきました。

最初は、Pythonスクリプトを直接呼び出す単純なMSBuild.projファイルを使用しました。たとえば、次のようなものでdeps.jsを作成します。

<PropertyGroup>
  <ScriptDirectory>yourprojectname</ScriptDirectory>
  <ClosureLibrary>closure</ClosureLibrary>
  <CalcDeps>$(ClosureLibrary)\bin\calcdeps.py</CalcDeps>
</PropertyGroup>

<Target Name="Deps">
  <Exec Command="$(CalcDeps) -o deps -p $(ScriptDirectory) -d $(ClosureLibrary) --output_file=$(ScriptDirectory)\deps.js" />
</Target>

実際のビルドはもっと複雑でしたが、それでも比較的簡単です(MSBuildに精通していると仮定します)。スクリプト呼び出しの関連部分ごとに、異なるタイプのアイテムグループを使用しただけです。

<Target Name="Build" DependsOnTargets="Init;FindCompiler">
  <PropertyGroup Condition="'@(Extern)' != ''">
    <Externs>-f --externs=@(Extern, ' -f --externs=')</Externs>
  </PropertyGroup>
  <PropertyGroup Condition="'@(Define)' != ''">
    <Defines>-f --define=@(Define, ' -f --define=')</Defines>
  </PropertyGroup>
  <PropertyGroup Condition="'@(Compile)' != ''">
    <Compile>-i @(Compile, ' -i ')</Compile>
  </PropertyGroup>
  <Exec Command="$(CalcDeps) $(Compile) -o compiled -c $(ClosureCompiler) -p $(ClosureLibrary) -p $(ScriptDirectory) $(Externs) $(Defines) -f @(CompilerOption, ' -f ') --output_file $(OutputFile)" />
</Target>

これは非常に単純だったので、わざわざタスクを探したり、独自のタスクを構築するために投資したりする必要はありませんでした。クロージャは非常に動きの速いプロジェクトであるため、サードパーティのビルドシステム、特にメンテナンスされていないように見えるシステム(リンクしたタスク)に過度に依存していない状況にあるのは良いことです。

今、私たちのビルドシステムが少し移行したので、私は過去形で話してきました。具体的には、プロジェクトが成長し続けるにつれて、スクリプトコードのさまざまな部分をモジュールに分割することがますます重要になりました。すぐに使用できるClosureスクリプトを使用してこれを行うことは、非常に悪夢です。そのため、plovr(http://plovr.com/)に移行することにしました。これにより、コードをモジュールに非常に簡単に分割できます。plovrは非常に積極的に保守されており、Closureに関する本を文字通り書いたMichael Bolinによって作成されました(これも強くお勧めします)。

同じMSBuildファイルを使用してこれをラップします。基本的に、アイテムグループで定義していたものは、plovr-config.jsファイルに移動し、呼び出しもはるかに簡単になります。

<Target Name="Build" DependsOnTargets="Init;FindPlovr">
  <Exec Command="$(Plovr) build plovr-config.js" />
</Target>

サイズレポートやモジュールグラフなど、plovrでサポートされている他の優れた機能がいくつかありますが、それらがなくても、現在の設定には非常に満足しています。

于 2011-04-30T21:15:55.107 に答える
1

最も明白な選択はYUICompressorで、安定していて信頼性があります。

.Netポートがあります:Yahoo!UIライブラリ:.Net用 のYUI Compressorには、mbsbuildタスクが付属しています。

また、オリジナル(Java)の使用もタスクの使用が簡単Execですが、唯一の欠点はJavaに依存していることです。

于 2011-04-29T13:28:53.957 に答える
1

ランタイムコンプレッサーであるSquishItDetails がありますが、非常にうまく機能しています。

于 2011-04-29T13:36:11.387 に答える
0

VisualStudio2010でのMicrosoftAJAXMinifierの使用で答えた非常によく似た質問が表示されます。1-クリックして公開します。ここで問題を解決するために、そこにある詳細を使用できるはずです。

于 2011-04-30T18:07:35.660 に答える