我有一个简单的 Dojo 1.8 AMD 网络应用程序。它有几个用于不同 MVC 视图的引导文件和 3 个自定义模块。我想构建两个引导文件以包含它们的相对依赖项。
文件结构
- js
- tournament_organiser
- Alert
- templates
- Alert.html
- ImportDialog
- templates
- ImportDialog.html
- SquadronPicker
- templates
- SquadronPicker.html
- Alert.js // module
- config.js // Dojo config file
- form_run.js // bootstrap for "from" view
- list_run.js // bootstrap for "list" list
- package.json
- ImportDialog.js // module
- SquadronPicker.js // module
- tournament_organiser.profile.js
- dojo_toolkit
- dojo
- dijit
- dojox
我想构建 2 个层文件,每个引导程序一个。每个都包含几个 Dijit 要求,用于视图中的声明性小部件,并form_run.js
使用自定义模块。
到目前为止,我有这个package.json
:
{
"name": "tournament_organiser",
"description": "Tournament organiser app for X-Wing Miniatures Game",
"version": "0.1",
"dependencies": {
"dojo": "~1.8.5",
"dijit": "~1.8.5",
"dojox": "~1.8.5"
},
"main": "src",
"homepage": "http://xwing-builder.co.uk/tournament",
"dojoBuild": "tournament_organiser.profile.js"
}
这对于tournament_organiser.profile.js
:
var profile = (function(){
return {
resourceTags: {
// tag all.js files as modules
amd: function(filename, mid) {
return /\.js$/.test(filename);
}
},
basePath: "./",
releaseDir: "../tournament_organiser_built",
action: "release",
packages:[{
name: "dojo",
location: "../dojo_toolkit/dojo"
},{
name: "dijit",
location: "../dojo_toolkit/dijit"
},{
name: "dojox",
location: "../dojo_toolkit/dojox"
},{
name: "squad_builder",
location: "../squad_builder"
}],
// this is the bit I'm stuck on... how do I define layers for each bootstrap?
layers: {
"form_run": {},
"list_run": {}
}
};
})();
示例引导文件 ( form_run.js
):
require( [ 'dojo/parser',
'dojo/on',
'dijit/registry',
'dojo/dom',
'dojo/dom-style',
'dojo/_base/array',
'dojo/_base/lang',
'dojo/aspect',
'squad_builder/loadingPane',
'tournament_organiser/SquadronPicker',
'tournament_organiser/Alert',
// used by declarative dijits on page
'dijit/form/Button',
'dijit/form/Form',
'dijit/form/ValidationTextBox',
'dijit/form/DateTextBox',
'dijit/form/NumberSpinner',
'dijit/form/CheckBox',
'dijit/form/Select',
'dijit/form/FilteringSelect',
'dojo/domReady!' ],
function ( parser, on, registry, dom, domStyle, array, lang, aspect, loadingPane, SquadronPicker, alert )
{
...
} );
如何告诉构建工具读取我的引导程序以找到必要的依赖项,并将它们全部捆绑到一个文件中?
此外,是否可以只输出构建的图层而不复制所有 Dojo Toolkit?在生产中,我使用 Google CDN 托管的 Dojo,因此只需要将我的层包含在页面中。
事实上,我更愿意将构建的层与源代码放在同一个文件夹中,然后在生产中加载层,在开发中加载原始文件。这是一个坏主意吗?
编辑:
我试过了:
layers: {
"form_run": { include: [ "tournament_organiser/form_run" ] },
"list_run": { include: [ "tournament_organiser/list_run" ] }
}
但是收到很多警告和错误: http: //pastebin.com/Yqz5zhT1