2010-10-28 2 views
11

Vorrei comprimere tutto il mio file .js nella stessa directory in un file con Google Closure Compiler in una riga di comando.Comprimi tutti i file .js con l'applicazione del compilatore di chiusura di Google in un file

Per un file è:

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

Ma non ho trovato nel documento come mettere il mio altro file alla fine del final.js senza scrittura nel corso degli ultimi file di comprimere?

Vorrei qualcosa di simile:

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

E 'possibile o devo fare un programma che aggiungere tutti i file in un file e dopo la compressione? Grazie se puoi aiutarmi!

+0

A proposito, ho scritto uno script per farlo. Ti consiglio di fare lo stesso. –

risposta

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

ERRORE - Ingresso duplicato: --js 1 error (s), 0 warning (s) – Adelin

+0

questo è quello che ottengo quando si utilizza il vaso in questo modo! – Adelin

6

Supponendo di avere installato la chiusura Compiler con Homebrew su un Mac, è possibile anche concatenare tutti i file e quindi il tubo a loro di chiusura (questo dovrebbe funzionare anche il modo in cui java -jar, ma non ho verificato esso):

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

'ls scripts/*. Js' non ricorre attraverso sottocartelle – hrdwdmrbl

7

ho cercato risposta Orbite, ma non funzionava forse la versione che uso è una versione più recente. Il comando che uso è:

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

Ho usato questo ' java -jar lib/compiler.jar --js \ 'find ./src/*. Js \' - -js_output_file build/out.cjs' – lcapra

+0

sì, questo è meglio –

2

È possibile utilizzare KjsCompiler: https://github.com/knyga/kjscompiler . Compila più file JavaScript con applicazione Google Closure Compiler in un giusto ordine

Come per risolvere il problema: 1. aggiungere annotazioni ai file js, in questo modo:

/** * @depends {lib/somefile.js} **/ Se non si cura di catena di compilazione, puoi ignorare questo passaggio. 2. java -jar kjscompile.jar

Potete cercare per esempio qui: https://github.com/knyga/kjscompiler/tree/master/examples

1

Qui ci sono cinque globbing tecniche per includere più file di input, con la documentazione estratto dalla classe CommandLineRunner:


(1) Questa è una variazione di muka's technique, rimozione del flag --js, che non è necessario:

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

Dalla documentazione:

Il nome --js bandiera è facoltativo, perché args sono interpretati come file per impostazione predefinita.

Ciò include tutti i file in .js/src/, ma non includerà tutti i file nelle sottodirectory di /src/.


(2) Simile al , ma includerà tutti .js file in /src/e tutte le sue sottodirectory:

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

(3) simile a , ma utilizza xargs:

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

Dalla documentazione:

è conveniente sfruttare argomenti integrativi presentano quando si utilizza il compilatore chiusura in combinazione con find e xargs:

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

Il find comando produrrà un elenco di file di origine '.js *' nel il 012.303.061.730.directory mentre xargs converte loro ad un unico set delimitato da spazi di argomenti che vengono aggiunti al comando java per eseguire il compilatore.

Nota che è importante utilizzare l'opzione --manage_closure_dependencies in questo caso perché l'ordine prodotto da find è improbabile che possa essere ordinato in modo corretto con rispetto al goog.provide() e goog.requires().


(4) Il rilascio v20140625 aggiunto il supporto per la (globstar) jolly, che in modo ricorsivo partite tutte le sottodirectory **.

Per esempio, questo includerà tutti i file in .js/src/ e tutte le sue sottodirectory:

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

Maggiori informazioni here. Da i documenti:

È anche possibile utilizzare modelli glob di stile minimatch. Ad esempio, l'uso:

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

per includere ricorsivamente tutti i file js che non terminano in _test.js

Dal Java docs:

Le seguenti regole vengono utilizzate per interpretare i modelli glob:

  • Il carattere * corrisponde a zero o più caratteri di un componente nome senza attraversare i confini delle directory.
  • I caratteri ** corrispondono a zero o più caratteri che attraversano i limiti delle directory.

(5) Il rilascio v20140625 anche aggiunto una nuova funzionalità: se il percorso di ingresso è una directory, allora tutti i file .js in tale directory e tutte le sottodirectory sarà incluso.

Per esempio, questo includerà tutti i file in .js/src/ e tutte le sue sottodirectory:

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

Maggiori informazioni 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

Qui compresseddir è una directory che contiene file js compressi e –

+0

e webdir si riferisce alla webapp nel nostro progetto –

0

La github di google chiusura doc dà il comando di seguito.

Se si dispone di più script, è necessario compilarli tutti insieme con un comando di compilazione.

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

È anche possibile utilizzare gocce minimatch stile.

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

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