我有以下dojo构建配置文件:
var profile = (function () {
return {
basePath: "./Scripts",
releaseDir: "./bin",
releaseName: "",
action: "release",
mini: true,
layerOptimize: "closure",
optimize: "closure",
cssOptimize: "comments",
localeList: false,
packages: [
{
name: "dojo",
location: "l:/dojo-debug/1.10.4/dojo"
},
{
name: "dijit",
location: "l:/dojo-debug/1.10.4/dijit"
},
{
name: "dojox",
location: "l:/dojo-debug/1.10.4/dojox"
},
...
],
layers: ...
};
})();
现在,我需要从一些json文件中读取值,所以我正在寻找类似的内容:
var profile = (function () {
var versions = SomeHowReadTheContentsOf("ThirdPartyJsLibRootMap.json");
return {
basePath: "./Scripts",
releaseDir: "./bin",
releaseName: "",
action: "release",
mini: true,
layerOptimize: "closure",
optimize: "closure",
cssOptimize: "comments",
localeList: false,
packages: [
{
name: "dojo",
location: "l:/dojo-debug/" + versions["dojo-debug"] + "/dojo"
},
{
name: "dijit",
location: "l:/dojo-debug/" + versions["dojo-debug"] + "/dijit"
},
{
name: "dojox",
location: "l:/dojo-debug/" + versions["dojo-debug"] + "/dojox"
}
...
],
layers: ...
};
})();
对于我的一生,我一直没有找到办法。
有任何想法吗?
编辑
我的命令行是:
node L:\dojo-debug\1.10.4\dojo\dojo.js load=build --profile .\package.profile.js
编辑2
我添加了
require
所有属性的控制台日志,结果如下:has = undefined
isXdUrl = undefined
initSyncLoader = undefined
eval = undefined
signal = undefined
on = undefined
map = undefined
rawConfig = undefined
legacyMode = undefined
async = undefined
waitms = undefined
baseUrl = undefined
idle = undefined
toAbsMid = undefined
toUrl = undefined
log = undefined
trace = undefined
injectUrl = undefined
getText = undefined
nodeRequire = undefined
uid = undefined
cache = undefined
packs = undefined
paths = undefined
aliases = undefined
modules = undefined
execQ = undefined
defQ = undefined
waiting = undefined
mapProgs = undefined
pathsMapProg = undefined
listenerQueues = undefined
computeMapProg = undefined
computeAliases = undefined
runMapProg = undefined
compactPath = undefined
getModuleInfo = undefined
boot = undefined
scopeify = undefined
因此存在
nodeRequire
,但其值为undefined
。出了点问题。 最佳答案
如果使用NodeJS运行Dojo构建器,则可以通过require
访问其require.nodeRequire
。在构建概要文件中,您还可以访问名为selfPath
的变量,该变量是已传递给构建器的概要文件的绝对目录名(与节点模块中的__dirname
相似)。将这两件事放在一起并假设ThirdPartyJsLibRootMap.json
是您的构建配置文件的同级文件:
var profile = (function () {
var req = require.nodeRequire;
var path = req('path');
var versions = req(path.join(selfPath, 'ThirdPartyJsLibRootMap.json'));
return {
...
};
})();
关于javascript - 如何在dojo应用程序构建概要文件中加载json文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29420631/