1

Google Closure Compiler を使用すると、次のように複数のファイルを 1 つのファイルにコンパイルできることを知っています。

java -jar compiler.jar --js assets/js/file1.js 
   assets/js/file2.js --js_output_file  assets/js/file.min.js

ただし、ファイルをコンパイルして、次のように同じフォルダーに同じ名前で配置する必要があります。

java -jar compiler.jar --js assets/js/file1.js 
    --js_output_file  assets/js/file1.js

java -jar compiler.jar --js assets/js/file2.js 
    --js_output_file  assets/js/file2.js

しかし、うまくいきません。ファイルが破損します。手伝って頂けますか?

4

2 に答える 2

0

まず、最も重要なことは、コンパイル スクリプトがソース ファイルを上書きするように設定されていることです。これがあなたがやろうとしていることであると本当に、完全に肯定的ですか?コンパイルは損失を伴う変換です: コメント (型注釈を含む) を破棄し、すべての名前を変更し、積極的にリファクタリングし、あらゆる場所でインライン化を行い、通常、ハードワークを維持できない混乱に陥れます。

java -jar compiler.jar --js assets/js/file1.js 
    --js_output_file  assets/js/file1.js

java -jar compiler.jar --js assets/js/file2.js 
    --js_output_file  assets/js/file2.js

私があなたの言葉を信じており、あなたが実際に上記のことを行った場合、残念ながら「私のファイルは現在破損しています」という質問を説明するでしょう. バックアップがあることを願っています。


より一般的には、Compiler Manualを読んでください。すべてですが、特に のセクションinconsistent property namesです。ソースファイルが互いにどのように関連しているかについてコンパイラーに通知されない場合、クロージャーがそれらの内容の名前を一貫して変更することは不可能です。

コンパイル済みスタイルの共有オブジェクトを作成する場合.dll、マニュアルに記載されている名前の断片化の問題のため、これはクロージャによってサポートされません。また、プリコンパイルする必要はありません。コンパイルはそのままでかなり高速です。代わりにソース ファイルを共有してください。

ビルド ディレクトリを作成し、コンパイラ出力をソース コードから離してください。コードが最初のパスで完全にビルドされることはありません。問題のコードが単純な数学ユーティリティであっても、何度もビルドしてテストする必要があります。

要約すれば:

(1)マニュアル全体を読む、(2) Externsを書くか試すgoog.require(3)プリコンパイルは過大評価されている、(4)ソースファイルを決して上書きしない、(5)頻繁にバックアップを保持する。

于 2013-09-16T20:20:59.237 に答える