Web サイト用にコンパイル済みの JavaScript ファイルを作成したいと考えています。開発のために、JavaScript を別々のファイルに保持し、自動化されたスクリプトの一部がファイルを 1 つに連結し、その上でコンプレッサーを実行するようにしたいと考えています。
私の問題は、古い DOS コピー コマンドを使用すると、コンプレッサーが不平を言う EOF マーカーも挿入されることです。
コピー /A *.js コンパイル済み.js /Y
他の人は何をしていますか?
Web サイト用にコンパイル済みの JavaScript ファイルを作成したいと考えています。開発のために、JavaScript を別々のファイルに保持し、自動化されたスクリプトの一部がファイルを 1 つに連結し、その上でコンプレッサーを実行するようにしたいと考えています。
私の問題は、古い DOS コピー コマンドを使用すると、コンプレッサーが不平を言う EOF マーカーも挿入されることです。
コピー /A *.js コンパイル済み.js /Y
他の人は何をしていますか?
Apache Ant と YUI Compressor の使用をお勧めします。
http://yui.github.com/yuicompressor/
このようなものを Ant ビルド xml に入れます。application.js と application-min.js の 2 つのファイルが作成されます。
<target name="concatenate" description="Concatenate all js files">
<concat destfile="build/application.js">
<fileset dir="src/js" includes="*.js" />
</concat>
</target>
<target name="compress" depends="concatenate" description="Compress application.js to application-min.js">
<apply executable="java" parallel="false">
<filelist dir="build" files="application.js" />
<arg line="-jar" />
<arg path="path/to/yuicompressor-2.4.2.jar" />
<srcfile />
<arg line="-o" />
<mapper type="glob" from="*.js" to="build/*-min.js" />
<targetfile />
</apply>
</target>
EOF を使用せずにコピーするには、バイナリ モードを使用します。
copy /B *.js compiled.js /Y
結果のファイルに元のファイルの 1 つに由来する可能性のある EOF がまだある場合は、次の亜種で修正できます。
copy /A *.js compiled.js /B /Y
/A は元のファイルから末尾の EOF があれば削除し、/B は結果のファイルに EOF が追加されないようにします。EOF が最後にない場合、ソース ファイルは EOF で切り捨てられます。スイッチの順序は重要です。あなたが書くなら
copy /A *.js /B compiled.js /Y
- ソース ファイルの EOF は削除されませんが、結果の EOF は追加されません。
自分で試してみてください。DOS コマンドは変です。
これは非常に古い質問ですが、javascript を使用して javascript を連結する方法もあることに言及したいと思います。明らかにnodejsを使用しています...たとえば、 このようなnpmモジュールとして公開されたツールがあり、gruntおよびgulpプラグインもあります。
また、jQuery や Modernizr などの大規模なプロジェクトで使用されている非常に興味深い手法についても触れておきたいと思います。このプロジェクトは両方とも、requirejs モジュールを使用して完全に開発されており、requirejs オプティマイザーを非常にスマートな連結子として使用しています。興味深いことに、ご覧のとおり、jQuery も Modernizr も機能するために requirejs を必要としません。これは、コード内の requirejs を取り除くために、requirejs 構文の儀式を削除したために発生します。そのため、requirejs モジュールで開発されたスタンドアロン ライブラリになります。このおかげで、他の利点の中でも特に、ライブラリのカットサム ビルドを実行できます。これは、これらすべてをより詳細に説明するブログ投稿です。
コンプレッサー uglifyjs をマシンにインストールします。
sudo npm -g install uglify-js
次に、次のコマンドを使用して、すべての js ファイルを連結および圧縮できます。
cat myAppDir/*.js | uglifyjs > build/application.js
以下のパーツからなる機構を作成しました。
あなたのニーズには多すぎるかもしれませんが、他の人が何をしているのかという質問に答えるために、それがどのように機能するかを次に示します。
これらはすべて、個別のサービスに分割されています。jsminificationwriter サービスに挿入されたキャッシュ サービスがあります。これは、縮小ルールのみを処理する元の縮小サービスを利用します。
このアプローチの優れている点は次のとおりです。
お役に立てれば。必要に応じて、いくつかのコード フラグメントを投稿して、さらに説明することもできます。
2 番目に yuicompressor を使用しますが、/packer/ を使用します。
それは私にとって本当に素晴らしいものでした。
次のこともできます。
type *.js > compiled.js
また、ビルド ツール (Maven プラグイン)、ランタイム ソリューション (フィルターを使用)、またはコマンド ライン ツールとして使用できるwro4j (Java 用の Web リソース オプティマイザー) を試すこともできます。これにより、リソースを簡単に整理し、ボット タイプのリソース用の多数の圧縮プログラム (js および css) を使用してマージを処理できます。
マージするリソースの定義は、次のように簡単です。
<groups xmlns="http://www.isdc.ro/wro">
<group name="all">
<css>/asset/*.css</css>
<js>/asset/*.js</js>
</group>
</groups>
免責事項: 私はこのプロジェクトのコミッターです。