【发布时间】:2015-10-02 18:03:03
【问题描述】:
也许我只是笨,但我完全看不懂这篇文章:https://dojotoolkit.org/documentation/tutorials/1.10/build/
在任何地方都有工作示例或更好的文章吗?我打算用更好的说明在谷歌上搜索其他基于 RequireJS 的构建工具。我能够在大约 15 分钟内启动 r.js,但它似乎不适用于 dojo。
我的项目文件结构如下:
- 道场
- dijit
- dojox
- 应用(包含此应用的所有自定义 AMD 模块)
- lib(非 AMD js 文件)
- main.js(主启动文件)
- app.profile.js
- package.json
我只想将 main.js、app 中的所有内容以及我正在使用的任何 dojo 模块连接到一个文件中。应该不会太难!但它只是复制发布文件夹中的每个 JS 文件,仅此而已。它似乎没有连接任何东西。
这是我的 app.profile.js:
var profile = (function(){
var copyOnly = function(filename, mid) {
var list = {
"./app.profile": true,
"./package.json": true
};
return (mid in list) ||
/^\.\/lib\//.test(filename) ||
/(png|jpg|jpeg|gif|tiff|html)$/.test(filename);
};
return {
basePath: "./",
releaseDir: "./build",
releaseName: "prod",
action: "release",
layerOptimize: "closure",
optimize: "closure",
cssOptimize: "comments",
mini: true,
stripConsole: "warn",
selectorEngine: "lite",
packages:[{
name: "dojo",
location: "dojo"
},{
name: "dijit",
location: "dijit"
},{
name: "dojox",
location: "dojox"
},{
name: "app",
location: "app"
}],
layers: {
"dojo/dojo": {
include: [ "dojo/dojo", "main" ],
customBase: true,
boot: true
}
},
resourceTags: {
copyOnly: function(filename, mid) {
return copyOnly(filename, mid);
},
amd: function(filename, mid) {
return !copyOnly(filename, mid) &&
/\.js$/.test(filename);
}
}
};
})();
【问题讨论】:
-
您的图层中列出了
"main",但您的意思可能是"app/main"。build-report.txt可能在查找main包时出错。除此之外,这在概念上应该有效。修复include,再次尝试构建,然后查看dojo/dojo.js或dojo/dojo.js.uncompressed.js。 -
main.js 是我之前用来启动应用程序的文件,它位于根目录中。它是一个简短的脚本,需要应用程序/应用程序(和一些其他对象),并实例化应用程序实例,然后告诉应用程序启动(解析 dojo 小部件等)。也许这是错误的?问题是我不知道定义层实际上是告诉编译器做什么。
-
定义一个层是告诉构建工具将几个模块连接在一起。
include中的东西是每个都应该爬取的依赖,它们所有的传递依赖也会被包含在层中。无论如何,回到你的main文件,看看它可能有助于理解你想要做什么。无论哪种方式,构建脚本和加载器都只能发现包中的模块(或在paths中定义,但建议使用packages)。理想情况下,您的应用程序的入口点应该是一个通过 AMD 加载器加载的模块,就像其他任何模块一样。
标签: dojo dojo-build