2013-03-05 3 views
4

У меня есть профиль создания dojo, который создает два слоя - слой dojo/dojo layer layer и еще один слой для моих файлов приложений.Dojo build profile no dojo layer (> 1.7)

Все это прекрасно работает и приводит к двум «большим» файлам (main.js и dojo.js), который содержит весь необходимый код.

Тем не менее, я действительно не хочу создавать слой «dojo/dojo» все время при создании приложения, это занимает много времени (> 100 секунд), и поскольку этот слой действительно сильно не меняется не хотят продолжать его строить.

Проблема в том, что даже с одним слоем «приложение/главная» сборка все еще создает все файлы dojo/dijit/dojox и все еще занимает много времени (я знаю, что мне не нужны эти файлы, но она по-прежнему разбор/оптимизация/сжатие ... всех этих файлов).

Есть ли вообще избежать этого? Мне просто нужна простая небольшая сборка только для моих файлов приложений.

вот мой профиль:

var profile = (function() { 
    var dojoDeps = ['dojo/dom', 'dojo/i18n', 'dojo/domReady', 'dojo/parser']; 
    var dojoxDeps = ['dojox/grid/DataGrid', 'dojox/data/JsonRestStore']; 
    var dijitDeps = ['dijit/form/Form', 'dijit/form/ValidationTextBox', 'dijit/form/Button', 
      'dijit/layout/BorderContainer']; 

    var allDojoDeps = [].concat(dojoDeps, dojoxDeps, dijitDeps); 
    var appDeps = ['app/main', 'app/run']; 

    return { 
    basePath: '../../../../dojo/dojo-src', 
    releaseDir: "../../target/dojo-compiled", 
    releaseName: "", 
    action: 'release', 

    cssOptimize: 'comments', 
    mini: true, 
    optimize: 'closure', 
    layerOptimize: 'closure', 

    stripConsole: 'normal', 
    selectorEngine: 'lite', 

    layers: { 
     'dojo/dojo': { 
     include: allDojoDeps, 
     boot: true 
     }, 
     'app/main': { 
     include: appDeps, 
     exclude: allDojoDeps 
     } 
    }, 

    staticHasFeatures: { 
     'dojo-trace-api': 0, 
     'dojo-log-api': 0, 
     'dojo-publish-privates': 0, 
     'dojo-sync-loader': 0, 
     'dojo-test-sniff': 0 
    }, 

    packages: [ 
     { 
     name: "dojo", 
     location: "dojo" 
     }, 
     { 
     name: "dijit", 
     location: "dijit" 
     }, 
     { 
     name: "dojox", 
     location: "dojox" 
     }, 
     { 
     name: "app", 
     depsScan:false, 
     location: "../../src/main/webapp/app" 
     } 
    ] 
    }; 

})(); 

Packages.com.google.javascript.jscomp.Compiler.setLoggingLevel(Packages.java.util.logging.Level.WARNING); 

ответ

0

optimize: "closure" заставит оптимизатор будет работать для всех файлов в релизе. опция layerOptimize - это то, что контролирует оптимизацию для слоев, поэтому вы можете установить optimize: "", чтобы остановить оптимизацию файлов без слоя, и вы должны обнаружить, что ваша сборка выполняется значительно быстрее.

+0

Большое спасибо! это уменьшило время от ~ 160 до ~ 80-90. Однако я все же думаю, что он должен работать намного быстрее - весь каталог webapp - 48 файлов, занимающих около 61 Кбайт, малость относительности. – user2133807

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