14

.jsコマンドラインでGoogleクロージャーコンパイラを使用して、同じディレクトリ内のすべてのファイルを1つのファイルに圧縮したいと思います。

1つのファイルの場合:

java -jar compiler.jar --js test.js --js_output_file final.js

しかしfinal.js、最後の圧縮ファイルを上書きせずに、他のファイルを最後に配置する方法をドキュメントで見つけられませんでしたか?

私はそのようなものが欲しいです:

java -jar compiler.jar --js --option *.js --js_output_file final.js

すべてのファイルをファイルに追加し、それを圧縮した後にプログラムを実行することは可能ですか、それとも実行する必要がありますか?あなたが私を助けることができればありがとう!

4

7 に答える 7

14
java -jar path/to/closure-compiler/build/compiler.jar \ 
--js input_one.js \ 
--js input_two.js \ 
... \ 
--js_output_file compiled_output.js 
于 2010-10-28T13:38:27.057 に答える
7

Orbitsの回答を試しましたが、実際には機能しませんでした。おそらく、使用しているバージョンが新しいバージョンです。私が使用するコマンドは次のとおりです。

java -jar compiler.jar --js file1.js file2.js file3.js  --js_output_file --js_output_file compiled_output.js. 
于 2012-12-17T14:30:34.503 に答える
6

MacにHomebrewを使用してClosureCompilerをインストールしたと仮定すると、すべてのファイルを連結してから、それらをClosureにパイプすることもできます(これも問題なく機能するはずjava -jarですが、検証していません)。

cat $(ls scripts/*.js) | closure-compiler --js_output_file main.js
于 2012-11-12T19:04:03.170 に答える
3

CommandLineRunnerクラスから抽出されたドキュメントを使用して、複数の入力ファイルを含めるための5つのグロブ手法を次に示します。


(1)これはmukaのテクニックのバリエーションであり、フラグを削除し--jsますが、これは不要です。

java -jar compiler.jar \
    --js_output_file build/out.js `find ./src/*.js`

ドキュメントから:

--jsargsはデフォルトでファイルとして解釈されるため、フラグ名はオプションです。

これには、のすべての.jsファイルが含ま/src/れますが、のサブディレクトリのファイルは含まれません/src/


(2)1に似ていますが、すべての.jsファイル/src/ とそのすべてのサブディレクトリが含まれます。

java -jar compiler.jar \
    --js_output_file build/out.js `find ./src/ -name '*.js'`

(3)2に似ていますが、以下を使用しますxargs

find ./src/ -name '*.js' \
    | xargs java -jar compiler.jar \
                --js_output_file build/out.js \
                --manage_closure_dependencies

ドキュメントから:

findクロージャーコンパイラをとと組み合わせて使用​​する場合は、追加の引数機能を利用すると便利ですxargs

find MY_JS_SRC_DIR -name '*.js' \
    | xargs java -jar compiler.jar --manage_closure_dependencies

このコマンドは、ディレクトリーfind内の「* .js」ソース・ファイルのリストを生成し、それらを、コンパイラーを実行するためにコマンドに追加される単一のスペース区切りの引数のセットに変換します 。MY_JS_SRC_DIRxargsjava

この場合、によって生成された順序がとに関して正しくソートされる可能性が低い--manage_closure_dependenciesため、このオプションを使用することが重要であることに注意して ください。findgoog.provide()goog.requires()


(4)v20140625 リリースでは、(globstar)ワイルドカードのサポートが追加されました。**これは、すべてのサブディレクトリに再帰的に一致します。

たとえば、これには、内のすべての.jsファイル/src/とそのすべてのサブディレクトリが含まれます。

java -jar compiler.jar \
    --js_output_file build/out.js './src/**.js'

詳細はこちら。ドキュメントから:

ミニマッチスタイルのグロブパターンを使用することもできます。たとえば、次を使用します。

--js='**.js' --js='!**_test.js'

_test.jsで終わらないすべてのjsファイルを再帰的に含める

Javaドキュメントから:

グロブパターンの解釈には、次のルールが使用されます。

  • 文字は、ディレクトリの境界を越えることなく、名前コンポーネントの0個以上の*文字と一致します。
  • 文字は、ディレクトリの境界を越える0個以上の**文字と一致します。

(5)v20140625 リリースには、新しい機能も追加されました。入力パスがディレクトリの場合、そのディレクトリ内のすべてのファイル.jsとすべてのサブディレクトリが含まれます。

たとえば、これには、内のすべての.jsファイル/src/とそのすべてのサブディレクトリが含まれます。

java -jar compiler.jar \
    --js_output_file build/out.js './src/'

詳細はこちら

于 2014-10-22T15:37:48.213 に答える
2

KjsCompilerを使用できます:https ://github.com/knyga/kjscompiler 。GoogleClosureCompilerアプリケーションを使用して複数のJavaScriptファイルを正しい順序でコンパイルします

問題を解決する方法:1。次のようにjsファイルに注釈を追加します。

/** * @depends {lib/somefile.js} **/ コンパイルチェーンを気にしない場合は、この手順を無視できます。2.2。java -jar kjscompile.jar

ここで例を見ることができます:https ://github.com/knyga/kjscompiler/tree/master/examples

于 2014-01-09T12:15:05.160 に答える
1

    <exec executable="java">
        <arg line="-jar ../lib/compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --language_in ECMASCRIPT5 --js_output_file=${compressdir}/js/controllers/jscontrollersfiles.js ${webappdir}/js/controllers/*.js" />
    </exec>

于 2015-06-16T06:14:39.913 に答える
0

グーグルクロージャードキュメントのgithubは以下のコマンドを提供します。

複数のスクリプトがある場合は、1つのコンパイルコマンドですべてをコンパイルする必要があります。

java -jar compiler.jar --js_output_file=out.js in1.js in2.js in3.js ...

ミニマッチスタイルのグロブを使用することもできます。

# Recursively include all js files in subdirs
java -jar compiler.jar --js_output_file=out.js 'src/**.js'

# Recursively include all js files in subdirs, excluding test files.
# Use single-quotes, so that bash doesn't try to expand the '!'
java -jar compiler.jar --js_output_file=out.js 'src/**.js' '!**_test.js'

ソース:https ://github.com/google/closure-compiler#compiling-multiple-scripts

于 2016-09-28T11:23:58.950 に答える