Phi*_*hix 14 dojo compilation build
我真的不知道从哪里开始.
我已经浏览了每个教程,文章和博客文章,试图获得dojo为其工作的一件事,并且我从来没有遇到过这样的问题,至少只是一点点.我发现了文档上的火焰战争以及有工作脚本的人,但没有发布或概述.在SO,我发现这是一个非常普遍的问题,但没有一半时间解决.
免责声明:忘记1.6.我从来没用过1.6.因此,我在网上找到的资源有一半是无效的,我的书也是如此.开始了.
有很多关于使用这种格式的帖子有什么区别:
dependencies = {
stripConsole: "all",
action: "release",
optimize: "shrinksafe",
// Omitted options...
layers: [{
name: "dojo.js",
customBase : true,
dependencies: [
"dojox.gauges.AnalogNeedleIndicator",
"myApp.smartmix"]
}
],
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
[ "myApp", "../../../myApp" ]
]
};
Run Code Online (Sandbox Code Playgroud)
...对比这种格式:
var profile = {
basePath: './',
stripConsole: 'all',
selectorEngine: 'lite',
layers: {
'dojo/dojo': {
include: ['dojo/dojo', 'dojo/domReady', 'dojo/_base/declare'],
boot: true,
customBase: true
},
'dgrid/dgrid': {
include: ["dgrid/List", "dgrid/OnDemandGrid", "dgrid/Selection", "dgrid/Keyboard", "dgrid/test/data/perf"]
}
}
// static-has-features removed
};
Run Code Online (Sandbox Code Playgroud)
两者layers之间的对象存在两个非常重要的差异:A)每个人似乎只是"知道"没有任何理由或理性,或者B)人们似乎只是"知道".我还没有找到任何关于两种语法(syntaxis?syntax's?)之间的差异的文章,它们与新的AMD结构和构建系统的重写有关.
我见过的最接近的是对象名称无关紧要,声明也没有.它可以是一个"全局"变量(省略var关键字),或者不是,只要返回的对象包含必要的信息,名称就无关紧要.
第二种格式给出了"意外的字符串"错误,并且99%的时间都失败,即使使用复制/粘贴的配置文件也是如此.
究竟需要什么?!Dojo的文档说package.json和appName.profile.js文件是必需的,但是在我看过的所有教程中,只有配置文件是必需的,并且用于此事.因此,不使用Dojo主网站上有关建筑的一半信息.所以........?
Dojo站点说要使用该src版本进行构建.Nabble的一个人说你必须得到svn版本,因为src版本已经"构建"了.
......那么谁是第一个?
是否有人,任何人都有一个工作目录结构和profile.js他们想要分享的文件?我试过了一切.我的意思是一切,以获得一个构建.一个建议是使用空的配置文件对象.这有效,而且没用.
另一个建议是使用dojo样板构建.如果有任何改动,模板有什么用呢? 您尝试过的是一个没有实际意义的问题,就像Tony Stark所说的那样,"每个已知的[javascript对象变体]的每个排列.没有任何作用."
我很快就失去了信心.并不是因为经过数小时的试验和失败后我无法弄明白,而是因为很多人都在同一条船上.它正在沉沦.
所以,我的最后一个请求是,有人可以,请说明这个构建系统是如何工作的,而不只是链接到谷歌上已经发现的读取和重读的链接?
如何......你...配置一个Dojo构建配置文件......并执行它......没有错误?!这个系统是多么糟糕,A)记录和B)实施,并且我在C)教授.这太累了.
我访问过的一些(很多)网站:
非常感谢@xesxz和@Craig Swing.经过一些小的事情,我得到了一个构建的配置文件,给我提供了我需要的东西!
有很多关于使用这种格式的帖子有什么区别......
您的第一个示例是针对pre Dojo 1.7版本.如果您使用1.7或更高版本,则需要第二个示例.
Dojo站点说要使用src版本进行构建.Nabble的一个人说你必须得到svn版本,因为src版本已经"构建"了.
......那么谁是第一个?
您需要http://dojotoolkit.org/download/上的SDK
在页面上,它被标记为"来源".它包含一个util目录,其中包含所有构建脚本,以及包含dojo文件的非构建版本的其他目录.
是否有人,任何人都有一个工作目录结构和profile.js文件他们想要分享?
我正在开发的项目与@xesxz发布的项目结构相似.但是,我尝试过使用但boot: true, customBase: true没有成功.以下是我的个人资料.(我的目录结构有点不同,所以路径与@xesxz发布的路径不匹配).
在我的应用程序中,我将包括以下内容
core.profile.js(用于建筑)
var profile = (function(){
var coreRequires = [
"dojo/_base/declare",
"dojo/_base/fx",
"dojo/_base/lang",
"dojo/currency",
"dojo/fx",
"dojo/number",
"dojo/on",
"dojo/query",
"dijit/dijit",
"myCore/ACoreWidget"
];
return {
basePath: "./dojo-release-1.8.3-src",
releaseDir: "../../DEV-REL",
action: "release",
cssOptimize: "comments",
selectorEngine: "acme",
packages:[{
name: "dojo",
location: "dojo"
},{
name: "dijit",
location: "dijit"
},{
name: "dojox",
location: "dojox"
},{
name: "myCoreModule",
location: "../myCore"
},{
name: "myAppModule1",
location: "../myAppModule1"
},{
name: "myAppModule2",
location: "../myAppModule2"
}],
layers: {
"myCore/core": {
include: coreRequires
},
"myAppModule1/app": {
include: [
"myAppModule1/WidgetX"
],
exclude: coreRequires
},
"myAppModule2/app": {
include: [
"myAppModule2/WidgetY"
],
exclude: coreRequires
}
}
};
})();
Run Code Online (Sandbox Code Playgroud)
如何......你...配置一个Dojo构建配置文件......并执行它......没有错误?
我使用node来构建.这将在包含构建配置文件的目录中执行.
node dojo-release-1.8.3-src/dojo/dojo.js load=build --profile core.profile.js --release --version=1.8.3
Run Code Online (Sandbox Code Playgroud)
我的建议是尝试使用一个非常简单的自定义窗口小部件来完成构建.如果可行,那么你真正的小部件
关于unexpected String,
put-selector和xStyle我刚刚完成了这个过程,我完全理解你的挫败感.我尝试了Dojo Boilerplate没有成功.然后我按照Dojo教程.我的目录是扁平的,像这样,
____app
| |__app.profile.js
| |__package.json
| |__app.js (main js file, which requires other modules)
| |__other.js
|
|__dojo
|__dijit
|__dojox
|__util
|__application.profile.js
Run Code Online (Sandbox Code Playgroud)
应用程序构建配置文件(application.profile.js)是从Dojo Boilerplate复制的,看起来像这样,
var profile = {
basePath: '.',
action: 'release',
cssOptimize: 'comments',
mini: true,
optimize: 'closure',
layerOptimize: 'closure',
stripConsole: 'none',
selectorEngine: 'acme',
packages: [
{name: 'dojo', location: 'dojo'},
{name: 'dijit', location: 'dijit'},
{name: 'dojox', location: 'dojox'},
{name: 'util', location: 'util'},
{name: 'app', location: 'app'}
],
layers: {
'dojo/dojo': {
include: ['dojo/i18n', 'dojo/domReady'],
boot: true,
customBase: true
},
'app/app': {}
},
staticHasFeatures: {
'dojo-trace-api': 0,
'dojo-log-api': 0,
'dojo-publish-privates': 0,
'dojo-sync-loader': 0,
'dojo-xhr-factory': 0,
'dojo-test-sniff': 0
}
};
Run Code Online (Sandbox Code Playgroud)
在我自己的app目录中,我有package.json(指定"dojoBuild":"package.js"属性)和包构建配置文件package.js文件,如下所示,
var profile = {
resourceTags: {
test: function (filename, mid) {
return false;
},
copyOnly: function (filename, mid) {
return (!/\.js$/.test(filename) && !/\.css$/.test(filename));
},
amd: function (filename, mid) {
return !this.copyOnly(filename, mid) && /\.js$/.test(filename);
},
miniExclude: function (filename, mid) {
return mid in {
'app/package': 1
};
}
};
Run Code Online (Sandbox Code Playgroud)
然后我运行直到/ buildscripts/build.sh --profile application.profile.js.我仍然会遇到很多错误,但最后,我将我的版本放在发布目录中,它似乎工作正常.我的下一步是找出那些错误.我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
1896 次 |
| 最近记录: |