dojo build 的 profile 示例

dojo build 的 profile 示例


var profile = (function(){
    var testResourceRe = /^(dojo|dijit|dojox)\/(tests(?:DOH)?|demos)\//,
        nodeModulesRe = /\/node_modules\//,

        copyOnly = function(filename, mid){
            var list = {
                "dojo/dojo.profile":1,
                "dojo/package.json":1,
                "dojo/OpenAjax":1,
                "dojo/tests":1,
                // these are test modules that are not intended to ever be built
                "dojo/tests/_base/loader/requirejs/requirejs-setup":1,
                "dojo/tests/_base/loader/requirejs/dataMain":1,
                "dojo/tests/_base/loader/requirejs/depoverlap":1,
                "dojo/tests/_base/loader/requirejs/simple-tests":1,
                "dojo/tests/_base/loader/requirejs/relative/relative-tests":1,
                "dojo/tests/_base/loader/requirejs/exports/exports-tests":1
            };
            return (mid in list) ||
                /^dojo\/_base\/config\w+$/.test(mid) ||
                (/^dojo\/resources\//.test(mid) && !/\.css$/.test(filename)) ||
                /(png|jpg|jpeg|gif|tiff)$/.test(filename) ||
                nodeModulesRe.test(mid) ||
                /built\-i18n\-test\/152\-build/.test(mid) ||
                /\.min\.js$/.test(filename);
        };

    return {
        resourceTags:{
            test: function(filename, mid){
                return testResourceRe.test(mid) || mid === "dojo/robot" || mid === "dojo/robotx";
            },

            copyOnly: function(filename, mid){
                return copyOnly(filename, mid);
            },

            amd: function(filename, mid){
                return !testResourceRe.test(mid) && !copyOnly(filename, mid) && /\.js$/.test(filename);
            },

            miniExclude: function(filename, mid){
                return nodeModulesRe.test(mid);
            }
        },

        basePath: "../../../js-lib-src/dojo-1.13.0-src",///相对于本文件的路径,接下类的编译都从这里开始计算。关联编译配置的文件位置。
        releaseDir: "../dojo-1.13.0-web-min",///相对于 build.bat 的 basePath(即 build 所用的 dojo 的目录),编译目标目录,编译器会覆盖它发现的一切。
        releaseName: "riaeasy-2.0.0",///releaseDir 的子目录
        action: "release",//一般就这样写,不要修改。
        //默认值为"shrinksafe"。若该值为false,则关闭压缩。shrinksafe.keeplines, closure, closure.keeplines, comments,comments.keeplines///dojo1.7+建议用closure。
        layerOptimize: "closure",//false,//"comments.keeplines",//"closure",
        //设置那些不是层的模块的压缩设置,默认为false,其他值和layerOptimize相同///dojo1.7+建议用closure。
        optimize: false,//"closure",
        //处理CSS的优化。默认为false。若为comments则去除注释和换行,并连接任何@import命令。其他可选的值有comments.keeplines,剔除注释和连接@import命令,但是保留换行。
        cssOptimize: true,//true,
        //决定编译过程中是否最小化。如果为真则标记为miniExcludes的文件被排除在外就像tests那样,demo和其他元素对于编译不是必需的。默认的为false。
        mini: true,///确定整个编译是否为"mini", 如果为true, 不会复制标记了miniExclude的文件,如测试,DEMO,以及不需要被编译(复制,最小化)的文件。 默认为false.
        stripConsole: "none",///处理输出代码中的console语名, 默认为"normal", 会删除所有console语句,除了console.error 和 console.warn.最需注意的是,这个特征只在优化级别时才适用。否则它会被忽略。 另外可能的值为"none", "warn" 和"all"
        //selectorEngine: "lite",///标识默认的选择器引擎。这不会直接使代码变小,它确保选择器引擎不包含其他的调用。默认没有设置,Dojo包含两个引擎lite和acme。

        ///build 后 dojo 的缺省 config,会导致 build 的结果直接采用这些默认值,如果不是明确用于某个明确项目,不要显式设置。
        defaultConfig: {
            isDebug: 1,
            parseOnLoad: 0,
            async: 1,
            //cacheBust: new Date(),
            waitSeconds: 15,
            //locale: 'zh-cn',
            extraLocale: ['en'],
            hasCache:{
                ///以下为 defaultConfig
                "dojo-undef-api": 1,//是否包含对模块卸载的支持
                "dojo-requirejs-api": 1,//是否支持RequireJS。
                "dojo-parser": 1,
                "dojo-mobile-parser": 1,
                "config-dojo-loader-catches": 1,//是否 catch 加载出错时的信息。默认为 false。
                //"dom-addeventlistener": 0,///old ie = 0///不应该在 build 时配置
                //"touch": 1,///不应该在 build 时配置
                //"dojo-bidi" : 0,///不应该在 build 时配置

                ///以下为 dojo 缺省的 dojoConfig
                //"host-browser": 1,//是否基于浏览器运行环境。默认为 true。设为0才能支持 Rhino 和 node。不建议修改。
                //"dom": 1,//是否基于 Dom。默认为 true。设为0才能支持 Rhino 和 node。不建议修改.
                //"dojo-amd-factory-scan": 1,//是否扫描模块内的 require。默认为 true。不建议修改。
                "dojo-has-api": 1,//是否直接使用 dojo 的 require 的 has。默认为 true。
                "dojo-inject-api": 1,//是否启用 require 的 injectUrl。默认为 true。
                "dojo-timeout-api": 1,//是否启用异步 require 的超时。默认为 true。设为0才能支持 Rhino 和 node。
                "dojo-trace-api": 1,//是否支持 require trace,包含 require 过程和嵌套检测等。默认为 true。
                "dojo-log-api": 1,//是否支持 require.log,受制于 dojo-trace-api,即需要 dojo-trace-api 才有效,是否记录加载器的log。默认为 true。
                //"dojo-dom-ready-api": 1,//是否保证 DOM ready API 是可用的。默认为 true。设为0才能支持 Rhino 和 node。不建议修改。
                "dojo-publish-privates": 1,//是否暴露 require 的私有方法和属性。默认为 true。RIAEasy 必须要为 true。
                //"dojo-config-api": 1,//是否保证 build 是可以配置的。默认为 true。不建议修改。
                //"dojo-sniff": 1,//是否自动解析 dojo.js 路径,并在未显式定义 baseUrl 时作为 baseUrl。设为0才能支持 Rhino 和 node。不建议修改。
                "dojo-sync-loader": 1,//是否支持同步 require。默认是 true。
                //"dojo-loader": 1,//是否使用 dojo 的 reuqire。默认为 true。不建议修改。
                //"dojo-test-sniff": 1,//是否包含浏览器探测代码。默认为 true。设为0才能支持 Rhino 和 node。不建议修改。
                "config-deferredInstrumentation": 1,是否禁止自动加载dojo/promise/instrumentation模块. 该模块用于监测被拒绝的承诺,将末被处理的错误输出到控制台。默认为 true。
                "config-tlmSiblingOfDojo": 1,//是否在 require 时将未定义的 package 转换为 dojo/../。默认为 true。

                "dojo-built": 1
            },
            packages: [
                //{name: 'dijit', location: '../dijit'},
                //{name: 'dojox', location: '../dojox'},
                //{name: 'rias', location: '../../../RIASServer/weblib/rias'},
                //{name: 'riasw', location: '../../../RIASServer/weblib/riasw'}
            ]
        },

        localeList: 'zh',///打包后直接加载的 i18n 包
        ///build 时 has 的预设值,会直接导致 build 的结果直接采用这些默认值进行 build,如果不是明确用于某个明确项目,不要显式设置。
        ///需要与上面的 defaultConfig 的 hasCache 配合使用,即显式设置 defaultConfig 中的非 dojo 的缺省 config 值
        staticHasFeatures: {
            /*这些值不建议预设
            "dojo-combo-api": 0,//是否支持一些老式的加载器API
            "dojo-config-addOnLoad": 1,
            "dojo-firebug": 1,//是否为那些没有开发者控制台(developer console)的浏览器启用firebug lite (e.g. IE6)
            "dojo-guarantee-console": 1,//是否使那些不能使用控制台的浏览器可以使用console(e.g. IE6)
            "config-selectorEngine": "lite",
            "dojo-debug-messages": 1,//是否包含检测diagnostic 信息
            "dojo-modulePaths": 1,//是否支持那些和加载模块相关的老式API
            "dojo-moduleUrl": 1,//是否那些和加载模块相关的老式API
            "dojo-xhr-factory": 1,///Rhino需要设为0
            "host-rhino": 0,
            "host-node": 0,
            "extend-dojo": 1,//Ensures pre-Dojo 2.0 behavior is maintained.保证  pre-Dojo 2.0行为是被维护的。
            */

            //"dojo-preload-i18n-Api": 0,///设为 1,会导致 require 时默认加载 nls/*_ROOT.js
            //"dojo-v1x-i18n-Api": 0,//启动对v1.x 国际化加载的支持 ( Dijit需要使用)

            ///以下为 defaultConfig
            "dojo-undef-api": 1,//是否包含对模块卸载的支持
            "dojo-requirejs-api": 1,//是否支持RequireJS。
            "dojo-parser": 1,
            "dojo-mobile-parser": 1,
            "dojo-config-require": 1,//是否可以配置require()
            "config-dojo-loader-catches": 1,//是否 catch 加载出错时的信息。默认为 false。
            //"dom-addeventlistener": 0,///old ie = 0///不应该在 build 时配置
            //"touch": 1,///不应该在 build 时配置
            //"dojo-bidi" : 0,///不应该在 build 时配置

            ///以下为 dojo 缺省的 dojoConfig
            //"host-browser": 1,//是否基于浏览器运行环境。默认为 true。设为0才能支持 Rhino 和 node。不建议修改。
            //"dom": 1,//是否基于 Dom。默认为 true。设为0才能支持 Rhino 和 node。不建议修改.
            //"dojo-amd-factory-scan": 1,//是否扫描模块内的 require。默认为 true。不建议修改。
            "dojo-has-api": 1,//是否直接使用 dojo 的 require 的 has。默认为 true。
            "dojo-inject-api": 1,//是否启用 require 的 injectUrl。默认为 true。
            "dojo-timeout-api": 1,//是否启用异步 require 的超时。默认为 true。设为0才能支持 Rhino 和 node。
            "dojo-trace-api": 1,//是否支持 require trace,包含 require 过程和嵌套检测等。默认为 true。
            "dojo-log-api": 1,//是否支持 require.log,受制于 dojo-trace-api,即需要 dojo-trace-api 才有效,是否记录加载器的log。默认为 true。
            //"dojo-dom-ready-api": 1,//是否保证 DOM ready API 是可用的。默认为 true。设为0才能支持 Rhino 和 node。不建议修改。
            "dojo-publish-privates": 1,//是否暴露 require 的私有方法和属性。默认为 true。RIAEasy 必须要为 true。
            //"dojo-config-api": 1,//是否保证 build 是可以配置的。默认为 true。不建议修改。
            //"dojo-sniff": 1,//是否自动解析 dojo.js 路径,并在未显式定义 baseUrl 时作为 baseUrl。设为0才能支持 Rhino 和 node。不建议修改。
            "dojo-sync-loader": 1,//是否支持同步 require。默认是 true。
            //"dojo-loader": 1,//是否使用 dojo 的 reuqire。默认为 true。不建议修改。
            //"dojo-test-sniff": 0,//是否包含浏览器探测代码。默认为 true。设为0才能支持 Rhino 和 node。不建议修改。
            "config-deferredInstrumentation": 1,//是否禁止自动加载dojo/promise/instrumentation模块. 该模块用于监测被拒绝的承诺,将末被处理的错误输出到控制台。默认为 true。
            "config-tlmSiblingOfDojo": 1,//是否在 require 时将未定义的 package 转换为 dojo/../。默认为 true。

            "dojo-built": 1

        },

        packages:[{///需要 build 系统处理的内容
            name: "dojo",
            location: "dojo"///相对于 basePath
        //},{
        //    name: "dijit",
        //    location: "dijit"///相对于 basePath
        //},{
        //    name: "dojox",
        //    location: "dojox"///相对于 basePath
        },{
            name: "rias",
            location: "../../RIASServer/weblib/rias", ///相对于 basePath
            main: "main"
        },{
            name: "riasw",
            location: "../../RIASServer/weblib/riasw", ///相对于 basePath
            main: "main"
        }],

        ///非常重要:鉴于 declare.extend 不能 extend ctor.base,不能引入需要 rias.hack 后的子类。
        layers: {/// build 系统处理后生成的打包文件,一个 layer 对应一个文件。
            "dojo/dojo": {
                include: [///合并到打包后的文件
                    "dojo/_base/kernel",
                    "dojo/_base/declare",
                    "dojo/_base/sniff",
                    "dojo/_base/lang",
                    "dojo/_base/config",
                    "dojo/_base/array",
                    "dojo/_base/Deferred",
                    //"dojo/_base/loader",///1.7之前的 dojo.require
                    //"dojo/_base/unload",
                    "dojo/_base/url",
                    "dojo/_base/json",
                    "dojo/_base/Color",
                    "dojo/_base/html",
                    "dojo/_base/NodeList",
                    //"dojo/_base/browser",
                    "dojo/_base/connect",
                    "dojo/_base/event",
                    "dojo/_base/window",
                    "dojo/_base/xhr",
                    //"dojo/main",
                    "dojo/has",
                    "dojo/sniff",
                    "dojo/i18n",
                    "dojo/colors",
                    //"dojo/cookie",

                    "dojo/cache",
                    "dojo/errors/create",
                    "dojo/errors/CancelError",
                    "dojo/number",
                    "dojo/currency",
                    "dojo/string",
                    "dojo/aspect",
                    "dojo/Deferred",
                    "dojo/promise/tracer",
                    "dojo/promise/Promise",
                    "dojo/promise/instrumentation",
                    "dojo/promise/all",
                    "dojo/promise/first",
                    "dojo/when",
                    "dojo/topic",
                    "dojo/hash",

                    "dojo/cldr/monetary",
                    "dojo/cldr/supplemental",
                    "dojo/date",
                    "dojo/date/locale",
                    "dojo/date/stamp",

                    "dojo/errors/RequestError",
                    "dojo/errors/RequestTimeoutError",

                    "dojo/Stateful",

                    "dojo/window",
                    "dojo/on",
                    "dojo/touch",
                    "dojo/keys",
                    "dojo/mouse",
                    "dojo/Evented",

                    "dojo/request",
                    "dojo/request/util",
                    "dojo/request/watch",
                    "dojo/request/handlers",
                    "dojo/request/xhr",
                    "dojo/request/notify",
                    //"dojo/io-query",
                    //"dojo/io/iframe",
                    //"dojo/io/script",

                    "dojo/regexp",

                    "dojo/parser",
                    "dojo/dom",
                    "dojo/dom-construct",
                    "dojo/dom-geometry",
                    "dojo/dom-class",
                    "dojo/dom-style",
                    "dojo/dom-attr",
                    "dojo/dom-prop",
                    "dojo/dom-form",
                    "dojo/uacss",
                    "dojo/hccss",
                    "dojo/selector/acme",
                    "dojo/selector/lite",
                    "dojo/selector/_loader",
                    "dojo/query",
                    "dojo/NodeList-dom",
                    "dojo/NodeList-traverse",
                    "dojo/ready",
                    "dojo/domReady",

                    "dojo/dnd/autoscroll",
                    "dojo/dnd/AutoSource",
                    "dojo/dnd/Avatar",
                    "dojo/dnd/common",
                    "dojo/dnd/Container",
                    "dojo/dnd/Manager",
                    "dojo/dnd/move",
                    "dojo/dnd/Moveable",
                    "dojo/dnd/Mover",
                    "dojo/dnd/Selector",
                    "dojo/dnd/Source",
                    "dojo/dnd/Target",
                    "dojo/dnd/TimedMoveable"
                ],
                exclude: [///不合并到打包后的文件,即使上面 include 有定义或递归引用
                    //"dojo/_base/kernel",
                    //"dojo/on",///has!dom-addeventlistener 需要检测浏览器,不能预先设定值
                    //"dojo/request/watch"///has!dom-addeventlistener 需要检测浏览器,不能预先设定值
                ],
                customBase: true,///true 表示强行合并到 dojo/dojo。
                boot: true///同上
            },

            "rias/riasBase": {
                include: [///合并到打包后的文件
                    //"rias/riasBase"
                ],
                exclude: [
                    "dojo/dojo"
                ]
            },
            "rias/store/Store": {
                include: [///合并到打包后的文件
                    "rias/store/Store",///用于加载 build 后的 Store 模块
                    "rias/store/Cache",
                    "rias/store/MemoryStore",
                    "rias/store/RequestCache",
                    "rias/store/RequestStore"
                ],
                exclude: [
                    "dojo/dojo",
                    "rias/riasBase"
                ]
            },
            //"rias/_base/Request": {/// 还是合并在 riasw/riaswCommon 中好些
            //    include: [///合并到打包后的文件
            //    ],
            //    exclude: [
            //        "dojo/dojo",
            //        "rias/riasBase"
            //    ]
            //},

            "riasw/riaswBase": {
                include: [///合并到打包后的文件
                    //"riasw/main"
                    //"riasw/riaswBase"
                ],
                exclude: [
                    "dojo/dojo",
                    "rias/riasBase"
                ]
            },
            "riasw/riaswCommon": {
                include: [///合并到打包后的文件
                    "riasw/sys/DefaultError",
                    "riasw/sys/_WidgetBase",
                    "riasw/sys/_TemplatedMixin",
                    "riasw/sys/_CssStateMixin",
                    "riasw/sys/_KeyNavMixin",
                    "riasw/sys/_Container",
                    "riasw/sys/_ModuleMixin",
                    "riasw/sys/_HasDropDown",
                    "riasw/sys/_Gutter",
                    "riasw/sys/_Splitter",
                    "riasw/sys/ToggleSplitter",
                    "riasw/sys/Label",
                    "riasw/sys/TimerLabel",
                    "riasw/sys/Logo",
                    "riasw/sys/Loadingtip",
                    "riasw/sys/Form",
                    "riasw/sys/Module",
                    "riasw/sys/Underlay",
                    "riasw/sys/Button",
                    "riasw/sys/ComboButton",
                    "riasw/sys/DropDownButton",
                    "riasw/sys/Menu",
                    "riasw/sys/MenuItem",
                    "riasw/sys/MenuCaption",
                    "riasw/sys/MenuSeparator",
                    "riasw/sys/PopupMenuItem",
                    "riasw/sys/RadioMenuItem",
                    "riasw/sys/Tag",
                    "riasw/sys/ContainerTag",
                    "riasw/sys/Tooltip",
                    "riasw/sys/ToolbarSeparator",
                    "riasw/sys/Toolbar",
                    "riasw/form/ProgressBar",
                    "riasw/form/Switch",
                    "riasw/form/SimpleSlider",
                    "riasw/form/Rating",
                    "riasw/form/CheckButton",
                    "riasw/form/RadioButton",
                    "riasw/form/CheckBox",
                    "riasw/form/RadioBox",
                    "riasw/form/TextBox",
                    "riasw/form/CurrencyTextBox",
                    "riasw/form/DateTextBox",
                    "riasw/form/DayTextBox",
                    "riasw/form/TimeTextBox",
                    "riasw/form/ButtonBox",
                    "riasw/form/ComboBox",
                    //"riasw/form/FilteringSelect",
                    "riasw/layout/_ContentMixin",
                    "riasw/layout/_PanelWidget",
                    "riasw/layout/_TabControlBarMixin",
                    "riasw/layout/DockBar",
                    "riasw/layout/ContentPanel",
                    "riasw/layout/CaptionPanel",
                    "riasw/layout/Fieldset",
                    "riasw/layout/StackPanel",
                    "riasw/layout/AccordionPanel",
                    "riasw/layout/TabPanel",
                    "riasw/layout/TablePanel",
                    "riasw/layout/Panel",

                    "riasw/module/inputDlg",

                    "riasw/sys/App",
                    "riasw/sys/Dialog"
                ],
                exclude: [
                    "dojo/dojo",
                    "rias/riasBase",
                    "riasw/riaswBase"
                ]
            },
            "riasw/widget/Tree": {
                include: [///合并到打包后的文件
                    //"riasw/main"
                    //"riasw/riaswBase",
                    "riasw/widget/Tree"
                ],
                exclude: [
                    "dojo/dojo",
                    "rias/riasBase",
                    "riasw/riaswBase",
                    "riasw/riaswCommon"
                ]
            },
            "riasw/widget/RiaGrid": {
                include: [///合并到打包后的文件
                    //"riasw/main"
                    //"riasw/riaswBase",
                    "riasw/widget/RiaGrid"
                ],
                exclude: [
                    "dojo/dojo",
                    "rias/riasBase",
                    "riasw/riaswBase",
                    "riasw/riaswCommon"
                ]
            },
            "riasw/editor/HTMLEditor": {
                include: [///合并到打包后的文件
                    "riasw/editor/HTMLEditor"
                ],
                exclude: [
                    "dojo/dojo",
                    "rias/riasBase",
                    "rias/store/Store",
                    "riasw/riaswBase",
                    "riasw/riaswCommon",
                    "riasw/widget/Tree",
                    "riasw/widget/RiaGrid"
                ]
            }
        }
    };
})();
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值