ここでのパーティーには本当に遅れましたが、これは誰かがまだ別の答えを探しているのに役立つかもしれないと考えました:
YUI Compressorを使おうとした後、jQueryとPrismの最新バージョン(プロジェクトに必要な2つの主要なサードパーティJSライブラリで1つのファイルに圧縮したい)と互換性がないことに失望しました。そこで、ES6+をサポートするUglify-JSのフォークであるTerserを使用することにしました。タスクを使用して直接実行することはできませんでした<exec>
が、Windowsコマンドラインメソッドを使用すると、少なくともWin 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プラグイン-JavaWebアプリケーション自体ではなく、Javaを使用してHTML5出力をビルドする)の一部であるため、統合はそれらを追加するだけでした。新しいターゲットへのタスク(デフォルトの設定と入力パラメーターのチェックに関するコードがさらにあります!)。
有効/無効にするのは簡単ですか?私の場合、JSファイルのビルドと縮小を含めるために、ANTビルドに渡すパラメーターがあります。そうです、パラメータを「はい」に設定した場合にのみ、このターゲットを実行します。これは、ANTビルドで設定するのは非常に簡単です。
透過的これまでのところ、私が含めているいくつかのJSファイルのいずれにも影響はないようです。それらのいくつかは私自身のものであり(そして私は決してJSの専門家ではありません)、そして私が述べたように、いくつかは一般的なJSライブラリです。
ミニファイアTerserですが、このメソッドを使用すると、コマンドライン入力でミニファイされたものをほぼすべて使用できます。
機能が不足していますか?TerserはJavaScriptでのみ機能します。CSSファイル(私が行う)に対して同じことをしたい場合は、YUICompressorを使用します。
そのように、それは現在アクティブなプロジェクトであり、良いサポートがあります。さらに、現在の実装(ANT<exec>
ターゲットを介してのみ呼び出す)では、将来何か他のものを使用する必要がある場合に、ミニファイアを交換することができます。
Node.JSが必要なのは気に入らない。Node.JSに反対するものは何もありません。ただし、この特定のプロジェクトではそれ以外の方法は必要ありません。これには、YUICompressorのようなJava.jarファイルを使用する方がはるかに好きです(必要に応じて、プラグインを使用して簡単に配布できます)。