Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Make a build in dojo 1.7.2

Tags:

dojo

Well, I read all about build and all about dojo. Three days nightmare and so on... Need some help.

I'm using the last version of dojo. 1.7.2 in:

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

I use the following profile:

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

then i use this build script

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

And I got the

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

NOW in my index.html file I have

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

And YES this reduce the 230 files loaded without the build to 153 files. BUT stills I (want to) believe that is posibble to reduce to one or 2 files.

But HOW?????

Please, some help will be appreciated!!!!

like image 783
Agustincl Avatar asked Feb 19 '12 19:02

Agustincl


1 Answers

Ok, your profile is not right.

1st of all: You are using customBase, which is an advanced property for creating a minimal version of dojo core. I don't think you want that, do you? Normally, you just let dojo build its core normally, and that ends up as dojo.js in your output dir.

2nd of all: Every layer entry there will generate a minified .js file with all the files in dependencies inside it.

So, if you want your myApp stuff in a built JS file, you'll need to create a layer, and put your files in its dependencies.

Dojo will still generate all the individual files - but you don't have to deploy them. Just deploy the layer files. I usually have a layer for Dojo core, a layer for the dijit/dojox stuff I want, and then a layer for my custom JS. Then there are three JS files, which dojo will output in the dojo dir, and they are used in the HTML page.

like image 176
mtyson Avatar answered Sep 29 '22 18:09

mtyson