Профиль сборки Dojo без слоя Dojo (>1,7)

У меня есть профиль сборки dojo, который создает два слоя - один слой dojo/dojo и другой слой для файлов моего приложения.

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

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

Проблема в том, что даже с одним слоем "app/main" сборка все еще создает все файлы 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);

1 ответ

Решение

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

Другие вопросы по тегам