2010-10-28 6 views
11

Ich möchte alle meine Datei .js in einem einzigen Verzeichnis in einer Datei mit Google Closure Compiler in einer Befehlszeile komprimieren.Alle Datei .js mit Google Closure Compiler-Anwendung in einer Datei komprimieren

für eine Datei es ist:

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

Aber ich habe nicht in dem doc finden, wie am Ende der final.js ohne Schreib in der letzten komprimieren Datei meine andere Datei setzen?

würde ich so etwas wie:

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

Es ist möglich, oder muss ich tun, ein Programm, die alle Dateien in einer Datei hinzufügen und nach komprimieren? Danke, wenn Sie mir helfen können!

+0

By the way, schrieb ich ein Drehbuch, es zu tun. Ich empfehle Ihnen, das Gleiche zu tun. –

Antwort

12
java -jar path/to/closure-compiler/build/compiler.jar \ 
--js input_one.js \ 
--js input_two.js \ 
... \ 
--js_output_file compiled_output.js 
+0

FEHLER - Doppelter Eingang: --js 1 Fehler (s), 0 Warnung (en) – Adelin

+0

das ist, was ich bekomme, wenn Sie das Glas so verwenden! – Adelin

6

Unter der Annahme, dass Sie die Closure Compiler mit Homebrew auf einem Mac installiert haben, können Sie auch alle Dateien verketten und dann Rohr sie zu Closure (dies auch die java -jar Art und Weise funktionieren soll, aber ich habe nicht überprüft it):

cat $(ls scripts/*.js) | closure-compiler --js_output_file main.js 
+0

'ls scripts/*. Js' rekuriert nicht durch Unterordner – hrdwdmrbl

7

Ich versuchte Orbits 'Antwort, aber es hat nicht wirklich funktioniert vielleicht die Version, die ich verwende, ist eine neuere Version. Der Befehl, den ich verwenden ist:

java -jar compiler.jar --js file1.js file2.js file3.js --js_output_file --js_output_file compiled_output.js. 
+4

Ich habe diese verwendet ' java -jar lib/compiler.jar --js \ 'finden ./src/*. Js \' - -js_output_file build/out.cjs' – lcapra

+0

ja, das ist besser –

2

Sie KjsCompiler verwenden können: https://github.com/knyga/kjscompiler . Kompiliert mehrere JavaScript-Dateien mit Google Closure Compiler-Anwendung in einer richtigen Reihenfolge

Wie Ihr Problem lösen: 1. Hinzufügen von Anmerkungen zu js Dateien, wie folgt aus:

/** * @depends {lib/somefile.js} **/ Wenn Sie nicht über Kompilation Kette kümmern, Sie können diesen Schritt ignorieren. 2. java -jar kjscompile.jar

Sie können hier zum Beispiel aussehen: https://github.com/knyga/kjscompiler/tree/master/examples

1

Hier sind fünf Globbing Techniken für mehrere Eingabedateien einschließlich, mit Dokumentation aus der CommandLineRunner Klasse extrahiert:


(1) Dies ist eine Variante von muka's technique, Entfernen der --js Flagge, die nicht benötigt wird:

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

Aus der Dokumentation:

Der --js Flagge Name ist optional, da args als Dateien standardmäßig interpretiert werden.

Dadurch werden alle .js Dateien in /src/, schließen ein, aber werden alle Dateien in einem Unterverzeichnis von /src/ nicht enthalten.


(2) Ähnlich , sondern umfassen alle .js Dateien in /src/und alle Unterverzeichnisse:

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

(3) Ähnlich , verwendet aber xargs:

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

Aus der Dokumentation:

Es ist bequem, die zusätzlichen Argumente verfügen bei Verwendung des Closure Compiler in Kombination mit find und xargs zu nutzen:

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

Die find Befehl wird eine Liste von '* .js' Quelldateien in dererzeugenVerzeichnis, während xargs wandelt sie in eine einzelne, durch Leerzeichen getrennte Reihe von Argumenten, die an den java Befehl zum Ausführen des Compilers angehängt werden.

Beachten Sie, dass es wichtig ist, die --manage_closure_dependencies Option in diesem Fall zu verwenden, da die von find hergestellt, um es unwahrscheinlich ist, richtig zu goog.provide() und goog.requires() mit Respekt sortiert werden.


(4) Die v20140625 Version hinzugefügt Unterstützung für die ** (globstar) Platzhalter, die rekursiv Einstimmungen alle Unterverzeichnisse.

Zum Beispiel wird diese umfassen alle .js Dateien in /src/ und alle Unterverzeichnisse:

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

Mehr Infos here. Aus der Dokumentation:

Sie können auch Minimatch-Stil Glob Patterns verwenden. Verwenden Sie zum Beispiel:

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

rekursiv alle js-Dateien einschließen, die nicht in _test enden.js

Vom Java docs:

Die folgenden Regeln werden verwendet glob Muster zu interpretieren:

  • Der * Zeichen entspricht null oder mehr Zeichen eines Namens Komponente ohne Verzeichnisgrenzen zu überqueren.
  • Die Zeichen ** stimmen mit null oder mehr Zeichen überein, die Verzeichnisgrenzen überschreiten.

(5) Die v20140625 Version hinzugefügt auch ein neues Feature: Wenn der Eingangspfad ein Verzeichnis ist, dann werden alle Dateien .js in diesem Verzeichnis und alle Unterverzeichnisse enthalten sein.

Zum Beispiel wird diese umfassen alle .js Dateien in /src/ und alle Unterverzeichnisse:

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

Mehr Infos here.

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> 

+0

Hier ist compresseddir ein Verzeichnis welches komprimierte js Dateien enthält und –

+0

und webdir verweist auf webapp in unserem Projekt –

0

Die Github von Google Schließung doc gibt den folgenden Befehl.

Wenn Sie mehrere Skripts haben, sollten Sie sie alle zusammen mit einem Kompilierbefehl kompilieren.

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

Sie können auch minimatch-Stil Klackse verwenden.

# 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' 

Quelle: https://github.com/google/closure-compiler#compiling-multiple-scripts

Verwandte Themen