2012-02-19 7 views
8

ठीक है, मैंने बिल्ड और डोजो के बारे में सब कुछ पढ़ा है। तीन दिन दुःस्वप्न और इतने पर ... कुछ मदद की ज़रूरत है।डोजो में एक बिल्ड बनाएं 1.7.2

मैं डोजो के अंतिम संस्करण का उपयोग कर रहा हूं। 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> 

है और हाँ यह 153 फाइलों को निर्माण के बिना लोड 230 फ़ाइलों को कम। लेकिन अभी भी मैं (चाहता हूं) मानता हूं कि एक या 2 फाइलों को कम करने के लिए सकारात्मक है।

लेकिन कैसे ?????

कृपया, कुछ मदद की सराहना की जाएगी !!!!

उत्तर

1

ठीक है, आपकी प्रोफ़ाइल सही नहीं है। सभी की

1: आप customBase उपयोग कर रहे हैं, जो डोजो कोर का एक न्यूनतम संस्करण बनाने के लिए एक उन्नत संपत्ति है। मुझे नहीं लगता कि तुम चाहते हो, है ना? आम तौर पर, आप सिर्फ डोजो को अपने मूल को सामान्य रूप से बनाने देते हैं, और यह आपके आउटपुट डीआईआर में dojo.js के रूप में समाप्त होता है।

के 2 सब: हर layer प्रवेश वहाँ एक minified .js dependencies इसके अंदर में सभी फाइलों के साथ फाइल उत्पन्न होगा।

तो, यदि आप एक निर्मित जेएस फ़ाइल में myApp सामान चाहते हैं, तो आपको एक परत बनाना होगा, और अपनी फ़ाइलों को इसकी निर्भरताओं में रखना होगा।

दोजो अभी भी सभी व्यक्तिगत फाइलें उत्पन्न करेगा - लेकिन आपको उन्हें तैनात करने की आवश्यकता नहीं है। बस परत फाइलों को तैनात करें। मेरे पास आमतौर पर डोजो कोर के लिए एक परत होती है, जो मुझे चाहिए डीजिट/डोजॉक्स सामग्री के लिए एक परत, और फिर मेरे कस्टम जेएस के लिए एक परत। फिर तीन जेएस फाइलें हैं, जो डोजो डोजो डीआईआर में आउटपुट करेगी, और इन्हें एचटीएमएल पेज में इस्तेमाल किया जाएगा।

+0

** 1 **: ठीक है मैं अभी के लिए 'customBase' निकालने के लिए, क्योंकि मैं वास्तव में एक बहुत कम .js चाहते हैं। ** दूसरा **: मुझे सभी निर्भरताओं के साथ एक minified .js की आवश्यकता है, इसलिए मेरे HTML को अन्य सभी को कॉल करने की आवश्यकता नहीं है .js (153 फ़ाइलें !!!!)। *** तीसरा *** निर्माण अभी भी 153 फाइलें बनाये। मैं बस एक फाइल चाहता हूं जिसमें सभी निर्भरताएं हों। – Agustincl

+0

दोजो अभी भी सभी व्यक्तिगत फाइलें बनाएगा - लेकिन आपको उन्हें तैनात करने की आवश्यकता नहीं है। आप बस अपनी परतों के लिए बनाई गई फ़ाइलों को तैनात करते हैं। मैं आपकी प्रोफ़ाइल में नहीं देखता हूं जहां आपके पास एक परत है जो सभी * आपके * कस्टम जेएस को एकत्र करती है, और आपको एक की आवश्यकता है। – 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>