ここのパーティーには本当に遅れましたが、これはまだ別の答えを探している人に役立つかもしれないと考えました:
YUI Compressorを使用しようとした後、jQueryおよびPrism(プロジェクトに必要な2つの主要なサードパーティJSライブラリの1つのファイルに圧縮したい)と互換性がないことにがっかりしました。私が使用することを決めたのでTerser ES6 +をサポートしていますUglify-JSのフォークです。<exec>
タスクを使用して直接実行することはできませんでしたが、Windowsコマンドラインメソッドを使用すると、少なくともWindows 10で機能します(他の方法では機能しないとは言いませんが、これは非常に簡単な回避策でした)。Pathシステム変数に他のものを追加する必要はありません(Node.JSは通常、インストール中に追加されるため)。まず、ANT <concat>
タスクを使用して、圧縮されていない大きなファイルを作成します。<fileset>
順序を維持するために使用します(とにかくそれが重要な場合)。
<concat destfile="${js-big-file}" encoding="UTF-8" outputencoding="UTF-8" fixlastline="true">
<filelist refid="js-input-filelist"/>
</concat>
次に、<exec>
タスクを使用して、TerserなどのNPMプログラムを実行します。このタスクのApacheマニュアルページは、これが.batファイルを実行するためのWindowsの回避策であることを示しましたが、実際にはほぼすべてのコマンドラインアプリケーションを実行できます(<exec>
不思議なことに他に見つけることができないものも含みます)。
<exec executable="cmd">
<arg value="/c"/>
<arg value="terser"/>
<arg value="${js-big-file}" />
<arg value="-o" />
<arg value="${smaller-js-file}"/>
</exec>
統合しますか?これはANTビルドスクリプト(特にカスタムJavascriptをサポートするDITA Open Toolkitプラグイン-Java Webアプリケーション自体ではなく、Javaを使用してHTML5出力をビルドする)の一部であるため、統合はそれらを追加する以上のことはありません新しいターゲットへのタスク(デフォルトの設定と入力パラメーターのチェックに関する追加のコードがあります!)。
有効化/無効化は簡単ですか?私の場合、JSファイルのビルドと縮小を含めるために、ANTビルドに渡すパラメーターがあります。したがって、はい、パラメーターを「はい」に設定した場合にのみ、このターゲットが実行されます。これは、ANTビルドで設定するのが非常に簡単です。
透明なこれまでのところ、私が含めていますいくつかのJSファイルのいずれかに影響を与えないように見えます。それらのいくつかは私自身のものであり(そして私は決してJSの専門家ではありません)、いくつかは、私が述べたように、一般的なJSライブラリです。
Minifier Terserができますが、この方法では、コマンドライン入力で縮小さどんなについてだけで使用することができます。
機能が不足していますか?Terser はJavaScriptでのみ機能します。CSSファイルに対しても同じようにしたい場合は(そうします)、YUI Compressorを使用します。
同じようにそれそれは、現在アクティブなプロジェクトであり、良好なサポートしています。さらに、現在の実装(ANT <exec>
ターゲット経由でのみ呼び出す)では、将来、何か他のものを使用する必要がある場合に、ミニファイアを交換できます。
Node.JSを必要とすることは好きではありません。Node.JSに対しては何もありません。この特定のプロジェクトでは、それ以外の場合は必要ありません。これにはYUI CompressorのようなJava .jarファイルを使用したいと思います(必要に応じて、プラグインを使用して簡単に配布できます)。