如何在2个dojo应用程序构建配置文件之间共享公共设置

时间:2014-10-03 10:30:15

标签: build dojo

我们有两个不同版本的dojo应用程序,使用包含dojo应用程序构建配置文件的ourapp.profile.jsourapp.custom.profile.js

layers属性中的一些差异外,这两个文件的其余部分实际上是相同的。分享这两个文件之间共同设置的最佳方式是什么?

这是我们的应用程序配置文件的简化示例



var profile = (function () {
    'use strict';

    return {
        basePath: "../",
        releaseDir: "../../../build",
        releaseName: "js",
        action: "release",

        dirs: ["../css", "../css/font", "../img", "../img/icons", "../stylus/themes/common"],

        packages: [
            {
                name: "dbootstrap",
                location: "dbootstrap"
            },
            {
                name: "dgrid",
                location: "dgrid"
            },
            {
                name: "dstore",
                location: "dstore"
            },
            {
                name: "dijit",
                location: "dijit"
            },
            {
                name: "dojo",
                location: "dojo"
            },
            {
                name: "dojox",
                location: "dojox"
            },
            {
                name: "ourapp",
                location: "ourapp"
            },
            {
                name: "lib",
                location: "lib"
            },
            {
                name: "xstyle",
                location: "xstyle"
            },
            {
                name: "specs",
                location: "specs"
            }
        ],
        layers: {
            "dojo/dojo": {
                include: [
                    "dojo/dojo",
                    "dojo/i18n",
                    "dojo/domReady",
                    "ourapp/boot",
                    // more includes
                    ...
                ],
                customBase: true,
                boot: true,
            },
            // other layers
            ...

        },

        layerOptimize: "closure",
        optimize: "closure",
        cssOptimize: "comments",
        mini: 1,
        stripConsole: "warn",
        selectorEngine: "lite",
        insertAbsMids: false,
        staticHasFeatures: {
            "config-deferredInstrumentation": 0,
            // More settings
            ..
        },

        defaultConfig: {
            hasCache: {
                "dojo-built": 1,
                "dojo-loader": 1,
                "dom": 1,
                "host-browser": 1,
                "config-selectorEngine": "lite"
            },
            async: 1
        }
    };
})();




理想情况下,我们希望两个文件共享一组常用设置,并指定我们的2个应用程序配置文件中不同的部分。

更新

This page讨论了多个配置文件来源,因此我尝试将公共部分拆分为另一个配置文件,然后构建运行类似:

>build.bat --profile ourapp.shared.profile.js --profile ourapp.profile.js

>build.bat --profile ourapp.shared.profile.js --profile ourapp.custom.profile.js

有没有人尝试类似的东西?

1 个答案:

答案 0 :(得分:0)

问题更新中建议的方法确实有效,但没有很好地记录如何组合或替换不同的配置文件属性,因此需要进行一些试验和错误,因为某些属性的处理方式不同。

我们现在所拥有的是问题(ourapp.profile.js)和ourapp.custom.profile.js中显示的个人资料如下:

var profile = (function () {
    'use strict';

    return {
        basePath: "../",
        releaseName: "js-custom",

        packages: [
            {
                name: "ourapp",
                location: "ourapp-custom"
            }}
        ]
    };
})();

现在,对于我们的自定义构建,我们从命令行运行它:

  

build.bat --profile ourapp.profile.js --profile ourapp.custom.profile.js

ourapp.custom.profile.js中的属性会替换ourapp.profile.js中的属性,将版本名称更改为“js-custom”,并将标准的ourapp软件包替换为ourapp-custom中的备用软件包。