2012-02-19 11 views
8

Bueno, leí todo sobre build y todo sobre dojo. Tres días de pesadilla, etc. Necesito ayuda.Haz una compilación en dojo 1.7.2

Estoy usando la última versión de dojo. 1.7.2 en:

</sites/somesite/scripts/dojo17> 
which contains 
--dojo 
--dijit 
--dojox 
--utils 

uso el siguiente perfil:

dependencies = { 
stripConsole: "all", 
action: "release", 
optimize: "shrinksafe", 
layerOptimize: "shrinksafe", 
//optimize: "closure", 
//layerOptimize: "closure", 
//mini: true, 
//localeList : 'en-us', 
//cssOptimize: "comments",  
//selectorEngine: "acme", 
releaseName: "content7", 
layers: [ 
{ 
    // This is a specially named layer, literally 'dojo.js' 
    // adding dependencies to this layer will include the modules 
    // in addition to the standard dojo.js base APIs. 
    name: "dojo.js", 
    customBase : true, 
     dependencies: [ 
      "dojo.fx", 
      "dijit.form.Button",    
      "dojox.gauges.AnalogGauge", 
      "dojox.gauges.AnalogArcIndicator", 
      "dojox.gauges.AnalogNeedleIndicator", 
      "myApp.smartmix" 
    ]   
    } 
], 
prefixes: [ 
    [ "dijit", "../dijit" ], 
    [ "dojox", "../dojox" ], 
    [ "myApp", "../../../myApp" ] 
] 
}; 

entonces yo uso este script de construcción

./build.sh profile=../../../../myApp/myApp.profile.js releaseDir=../../../release 

y me dio la

</sites/somesite/scripts/release/content7> 
which contains 
--dijit 
--dojo 
--dojox 
--myApp 

ahora en mi archivo index.html que tienen

<script type="text/javascript"> 
//<![CDATA[ 
    var djConfig = { 
     parseOnLoad: true, 
     isDebug: false, 
     modulePaths: { 
      'myApp': '../myApp' 
     } 
    }; 
//]]> 
</script> 

<script type="text/javascript" src="scripts/release/content7/dojo/dojo.js"></script> 

<script> 
    dojo.require('myApp.smartmix'); 
</script> 

y sí reducir los 230 archivos cargados sin la acumulación de 153 archivos. PERO las fotogramas I (quiero) creer que es posible reducir a uno o 2 archivos.

Pero ¿CÓMO ?????

Por favor, alguna ayuda será apreciada !!!!

Respuesta

1

Ok, su perfil no es el correcto.

Primero de todos: Está utilizando customBase, que es una propiedad avanzada para crear una versión mínima de dojo core. No creo que quieras eso, ¿verdad? Normalmente, solo dejas que dojo construya su núcleo normalmente, y eso termina como dojo.js en tu dir de salida.

segundo lugar: Cada layer entrada no generará un archivo .js minified con todos los archivos de dependencies su interior.

Por lo tanto, si desea que su myApp cosas en un archivo JS integrado, tendrá que crear una capa, y poner sus archivos en sus dependencias.

Dojo seguirá generando todos los archivos individuales, pero no es necesario que los implemente. Simplemente despliega los archivos de capa. Normalmente tengo una capa para Dojo core, una capa para las cosas dijit/dojox que quiero, y luego una capa para mi JS personalizado. Luego hay tres archivos JS, que Dojo generará en el directorio dojo y se usarán en la página HTML.

+0

** ** primero: ok me quito el 'customBase', sólo por ahora porque realmente quiero aquí a muy poco Js. ** 2º **: Necesito un .js minificado con todas las dependencias para que mi html no tenga que llamar a todos los demás .js (¡¡153 archivos !!!!). *** 3ro *** La compilación todavía hizo 153 archivos. Solo quiero un archivo con todas las dependencias dentro. – Agustincl

+0

Dojo seguirá creando todos los archivos individuales, pero no es necesario que los implemente. Simplemente despliega los archivos que se crean para sus capas. No veo en su perfil donde tenga una capa que reúna todos * su * JS personalizado, y necesita uno. – mtyson

0
... 
layers: [ 
{ 
// this is a layer 'application', which will cache all 
// dependencies to smartmix and declare smartmix in the same file 
    name: "../../../myApp/smartmix.js", 
     dependencies: [ 
      "dojo.fx", 
      "dijit.form.Button",    
      "dojox.gauges.AnalogGauge", 
      "dojox.gauges.AnalogArcIndicator", 
      "dojox.gauges.AnalogNeedleIndicator", 
      "myApp.smartmix" 
    ]   
    } 
], 
... 

solo necesitará dos solicitudes;

<script src=..dojo.js></script>

y

<script>require(["myApp.smartmix"], function(smartmixApplication) { });</script>