2010-07-08 4 views
21

Sto creando una libreria abbastanza grande di JavaScript, utilizzando il compilatore di chiusura sia per la sua meravigliosa compressione che per i sistemi di controllo dei tipi e di avvertimento.Utilizzo dell'opzione --module in Closure Compiler per creare più file di output

Tuttavia, desidero creare più file di output perché i file vengono caricati in modo asincrono (e alcuni file vengono caricati solo su richiesta).

Girando attorno al codice sorgente, ho trovato il flag --module e alcuni flag correlati. Il codice sorgente dice quanto segue sull'opzione:

Una specifica del modulo javascript. Il formato è <name>:<num-js-files>[:[<dep>,...][:]]]. I nomi dei moduli devono essere unici. Ogni dep è il nome di un modulo da cui dipende questo modulo. I moduli devono essere elencati in ordine di dipendenza e i file di origine js devono essere elencati nell'ordine corrispondente. Dove --module bandiere si verificano in relazione a --js bandiere non è importante

... e questo è tutto quello che posso trovare. Mi piacerebbe saperne di più su come utilizzare questa opzione, qualcuno ha qualche esperienza qui? In alternativa, se c'è un altro modo per creare più file di output, sono tutto orecchie.

+0

Ciao, mi stavo chiedendo se l'hai mai capito. Sono bloccato con un problema simile. –

+1

Costruito una soluzione hacky usando Python qui: https://github.com/fortes/js-project-template – Fortes

risposta

20
java -jar compiler.jar^
--module jq:1: --js jquery-1.6.2.js^
--module t:1:jq: --js test.js^
--compilation_level ADVANCED_OPTIMIZATIONS 

Questo esempio compilerà fuori 2 file per voi:

  • jq.js
  • t.js

jq.js saranno jQuery 1.6.2 con minimizzazione avanzata e t.js userà correttamente quella versione miniata di JQuery.

Vorrei che ci fosse un JavaFiddle su cui avrei potuto postare per dimostrarlo.


versione precedente

Questa risposta originale era per una versione precedente di chiusura del compilatore. L'ho lasciato intatto di seguito nel caso in cui ci si trovi in ​​un ambiente che deve mantenere la versione precedente in posizione.

Come gestire file di output multipli, alias moduli: http://groups.google.com/group/closure-compiler-discuss/browse_thread/thread/ec7f6809b19b019e/25a94f3994173840

Copia/incolla:

java -jar Build\Tools\compiler.jar^
--compilation_level=ADVANCED_OPTIMIZATIONS^
--externs Build\jQuery.externs.js^
--js Build\Output\Compiling.js^
--js Script/Themes.lang.js^
--js Script/Themes.js^
--module Core:3^
--js UI/ThemeChooser/ThemeChooser_en.htm.js^
--js UI/ThemeChooser/ThemeChooser.js^
--module UI_ThemeChooser:2:Core^
--js UI/VerticalTabs/VerticalTabs_en.htm.js^
--js UI/VerticalTabs/VerticalTabs.js^
--module UI_VerticalTabs:2:Core^
--js Pager/Pager_en.htm.js^
--js Pager/jquery.Pager.js^
--js Pager/Pager.js^
--module Pager:3:VerticalTabs^
--module_output_path_prefix .\Compiled\ 

E come egli osserva, --js_output_file è irrilevante quando l'output moduli.