2012-02-19 3 views
8

Ну, я прочитал все о сборке и все о додзё. Три дня кошмара и т. Д. Нужна помощь.Сделайте сборку в додзё 1.7.2

Я использую последнюю версию dojo. 1.7.2 в:

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

Я использую следующий профиль:

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" ] 
] 
}; 

тогда я использовать этот сценарий сборки

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

И я получил

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

сейчас в моем файле index.html У меня есть

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

И ДА это сократить 230 файлов, загруженных без сборки до 153 файлов. BUT stills Я (хочу) полагаю, что это может быть сведено к одному или двум файлам.

Но КАК ?????

Пожалуйста, помощь будет оценена !!!!

ответ

1

Хорошо, ваш профиль не является правильным.

1st of all: Вы используете customBase, который является расширенным свойством для создания минимальной версии ядра додзё. Я не думаю, что ты этого хочешь, не так ли? Обычно вы просто позволяете додзё строить свое ядро ​​нормально, и это заканчивается как dojo.js в вашем выходном каталоге.

второго весь: Каждый layer записи там будет генерировать уменьшенный .js файл со всеми файлами в dependencies внутри него.

Итак, если вы хотите, чтобы ваш материал myApp в построенном JS-файле, вам нужно создать слой и поместить ваши файлы в его зависимости.

Dojo все равно сгенерирует все отдельные файлы, но вам не нужно их развертывать. Просто разверните файлы слоев. Обычно у меня есть слой для ядра Dojo, слой для материала dijit/dojox, который я хочу, а затем слой для моей пользовательской JS. Тогда есть три JS-файла, которые dojo будет выводить в djo, и они используются на странице HTML.

+0

** ** первая: ок я удалить 'customBase', только сейчас, потому что я действительно хочу, очень мало .js. ** 2nd **: Мне нужен миниатюрный .js со всеми зависимостями, поэтому мой html не должен вызывать всех остальных .js (153 файла !!!!). *** 3-й *** В сборке все еще было 153 файла. Мне просто нужен один файл со всеми зависимостями внутри. – Agustincl

+0

Dojo все равно создаст все отдельные файлы, но вам не придется их развертывать. Вы просто разворачиваете файлы, созданные для ваших слоев. Я не вижу в вашем профиле, где у вас есть слой, который собирает все * ваши * пользовательские JS, и вам это нужно. – 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" 
    ]   
    } 
], 
... 

вам понадобятся только два запроса;

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

и

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

Смежные вопросы