【问题标题】:dojo 1.10 custom builddojo 1.10 自定义构建
【发布时间】:2017-04-04 10:34:16
【问题描述】:

我正在尝试使用 dojo sdk 1.10 创建自定义 dojo 构建

我有以下目录结构 -

   app
    build.profile.js
    dojo
    dijit
    dojox
    util
    myapp
     A.js
     B.js
     package.json
     myapp.profile.js

A.js 和 B.js 都是纯 AMD 模块。 B 是 A 的依赖项

这是我的 myapp.profile.js -

var profile = (function(){
return {
    resourceTags: {
        amd : function(filename, mid) {
            if(filename.indexOf('profile.js') != -1  && /\.js$/.test(filename))
                return true;
            else return false;
        }
    }
};
})();

这是我的 myapp package.json -

{ 
"name": "custom",
"description": "My Application.",
"version": "1.0",
"keywords": ["JavaScript", "Dojo", "Toolkit", "DojoX"],
"dojoBuild": "myapp.profile.js"
}

这是我的应用范围 build.profile.js -

    var profile = (function(){
return {
    basePath: ".",
    releaseDir: "./build",
    releaseName: "javascript",
    action: "release",
    stripConsole: "warn",
    selectorEngine: "lite",

    packages:[{
        name: "dojo",
        location: "dojo"
    },{
        name: "dijit",
        location: "dijit"
    },{
        name: "dojox",
        location: "dojox"
    },{
        name: "custom",
        location: "myapp"
    }],

    layers: {
        "dojo/dojo": {
            include: [ "dojo/dojo", "dojo/i18n", "dojo/domReady"],
            customBase: true,
            boot: true
        },
        "custom/custom": {
            include: ["myapp/A"]
        }
    }
};
})();

所有配置看起来都不错,但是当我构建时出现以下错误:-

error(311) Missing dependency. module: myapp/A; dependency: myapp/B

这是我的 A.js :-

define([
"dojox/mobile/Badge",
"dijit/_Widget",
"myapp/B",
], function(declare, Button, Bb){
    return declare("A", Button, {

});
});

这是我的 B.js :-

define([
"dojox/mobile/Badge",
"dijit/_Widget"
], function(declare, Button){
    return declare("B", Button, {

});
});

我的个人资料对象中是否缺少某些内容?我在这里被阻止,无法构建我的项目。

【问题讨论】:

  • 尝试将 A.js 中的 "myapp/B" 更改为 "./B""custom/B"
  • 哇,这对我有用,谢谢哥们。
  • 两个版本都可以工作还是只有第一个?
  • ./B 工作,:) 再次感谢。请在答案部分写下,以便我可以将其标记为已解决,您将获得 repo :)

标签: dojo dojo-build


【解决方案1】:

在你有这样的包部分

{
    name: "custom",
    location: "myapp"
}],

然而,在加载模块时,您使用的是 "myapp/A" 而不是 "custom/A"。尝试改变它,让我知道它是否有效。

【讨论】:

  • 您需要在您尝试访问模块的所有地方执行此操作。这意味着myapp/B 必须是custom/B
  • 谢谢兄弟,我的问题中的评论解决了我的问题,你是对的,我在“层”中犯了一些错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 2011-07-25
  • 2012-04-24
  • 1970-01-01
相关资源
最近更新 更多