1

Ant を使用して、プロジェクト内のすべての JS ファイルを最小化しています。さまざまな JS ファイル (つまり、file1.js、file2.js、file3.js) を 1 つのファイル (つまり、file.min.js) にコンパイルし、この最小化されたバージョンを HTML ソース ファイルと共にビルド フォルダーにコピーします。 .

うまく機能しますが、ビルド フォルダーにコピーされる HTML ソース ファイルは、最小化されていない古いバージョン (file1.js、file2.js など) を参照します。

私の質問は、Ant ビルドを実行するときに、HTML ソース コード内の関連するファイル参照を変更する機能/機能はありますか?

4

1 に答える 1

1

最も簡単な方法は、縮小された JS を常に使用することです。これは、デバッガーを介して JS を実行したり、わかりやすいバックトレースを取得したりする必要がない限り、うまく機能します。

「ソースマップ」と呼ばれる技術がこの問題を解決します。ソース マップを使用する場合は、いつでも縮小版を使用できます。デバッグが必要な場合、デバッガーは非縮小版をオンデマンドで読み込みます。残念ながら、この記事の執筆時点 (2013 年 3 月) ではソース マップは非常に新しいものであり、この技術にはブラウザーとミニファイアーの両方からのサポートが必要です。

HTML がテンプレートから作成されている場合は、設定をテンプレートに渡して、開発用か製品用かを指定し、それに応じてヘッダー テキストを変更する方がよいでしょう。

上記の解決策のいずれも適切でない場合、問題に対するハックな解決策は、次のように HTML で個別のコメントをマークすることです。

<!-- BEGIN DEVELOPMENT -->
<script src="src/js/file1.js"></script>
<script src="src/js/file2.js"></script>
<script src="src/js/file3.js"></script>
<!-- END DEVELOPMENT -->

<!-- BEGIN PRODUCTION
<script src="dist/js/file.js.min"></script>
     END PRODUCTION -->

次に、Ant にいくつかの sed スクリプトを実行させて、開発ステートメントをコメントアウトし、運用ステートメントを追加します。

# run this command to create production version of project.html
cat src/html/project.html                                       \
| sed -e 's/<!-- BEGIN DEVELOPMENT -->/<!-- BEGIN DEVELOPMENT/' \
| sed -e 's/<!-- END DEVELOPMENT -->/     END DEVELOPMENT -->/' \
| sed -e 's/<!-- BEGIN PRODUCTION/<!-- BEGIN PRODUCTION -->/'   \
| sed -e 's/     END PRODUCTION -->/<!-- END PRODUCTION -->/'   \
> dist/html/project.html

このコマンドをシェル スクリプトに入れ、Ant に execfile でスクリプトを実行させることをお勧めします。ant-contrib などでこの種の置換を行うサードパーティのタスクも存在する可能性がありますが、それらを使用することは、コードをビルドするすべての人にとって苦痛になります。

sed のない非 UNIX ライクなシステム (つまり、Windows) で構築している場合は、gnuwin32 プロジェクトの sed の Windows バージョンを使用できる場合があります。または、Virtualbox VM の Linux でビルドするだけです

于 2013-03-21T01:08:30.387 に答える