2010-07-08 14 views
21

Estoy creando una biblioteca bastante grande de JavaScript, usando Closure Compiler tanto para su excelente compresión como para los sistemas de verificación de tipo y advertencia.Usando la opción --module en Closure Compiler para crear múltiples archivos de salida

Aunque quiero crear múltiples archivos de salida, porque los archivos se cargan de forma asíncrona (y algunos archivos solo se cargan a pedido).

Examinando el código fuente, encontré el indicador --module, así como algunos indicadores relacionados. El código fuente dice lo siguiente acerca de la opción:

Especificación del módulo de JavaScript. El formato es <name>:<num-js-files>[:[<dep>,...][:]]]. Los nombres de los módulos deben ser únicos. Cada dep es el nombre de un módulo del que depende este módulo. Los módulos se deben enumerar en orden de dependencia, y los archivos de origen js se deben enumerar en la orden correspondiente. Donde --module banderas se producen en relación con --js banderas no es importante

... y eso es todo lo que puedo encontrar. Me encantaría aprender más sobre cómo usar esta opción, ¿alguien tiene alguna experiencia aquí? Alternativamente, si hay otra forma de crear múltiples archivos de salida, soy todo oídos.

+0

Hola, me preguntaba si alguna vez se dio cuenta de esto. Estoy atrapado con un problema similar. –

+1

Construí una solución hacky usando Python aquí: https://github.com/fortes/js-project-template – Fortes

Respuesta

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 

En este ejemplo se compilará a cabo 2 archivos para usted:

  • jq.js
  • t.js

jq.js serán jQuery 1.6.2 con minimización avanzada y t.js usará esa versión minimizada de JQuery correctamente.

Ojalá hubiera un JavaFiddle en el que podría publicar esto para demostrarlo.


antigua versión

Esta respuesta original era para una versión anterior del cierre del compilador. Lo dejé intacto a continuación en caso de que estés en un entorno que necesite mantener la versión anterior en su lugar.

Cómo manejar múltiples archivos de salida, también conocidos como módulos: http://groups.google.com/group/closure-compiler-discuss/browse_thread/thread/ec7f6809b19b019e/25a94f3994173840

Copiar/pegar:

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\ 

Y como él señala, --js_output_file es irrelevante cuando se emiten los módulos.

Cuestiones relacionadas