AMD ベースの Dojo ビルド システムの学習に苦労しています。これまでのところ、ブラウザー (FF) でロード エラーが発生せずに使用できるビルドを取得できていません。
ビルドの管理方法について質問があります。
私のビルド プロファイル ファイルには、packages セクションがあります。私が指定した内容は、宛先ディレクトリに書き込まれている同じパッケージ ディレクトリに直接関連しているようです。これは適切なようです。ただし、dojo、dijit、dojox などから「参照された」モジュールだけをマージしようとしているレイヤー セクションもあります。それらが 1 つの dojo.js ファイルに結合されると、宛先ディレクトリにそれらのライブラリ ディレクトリがすべて残っています。 . 手動でそれらを削除するだけであることが理解されていますか、それともビルド中にそれらを自動的に削除する方法はありますか?
最初のレイヤーでは、dojo、dijit、および dojox/app/main 用にビルドしようとしています。これは、dojo/resources/blank.gif や同じディレクトリ内の .css ファイルなどのリソースをプルするわけではありません。これらのリソース ファイルをコピー先にコピーするにはどうすればよいでしょうか。dojo.profile.js (これらのリソースをコピーすることを示しています) は dojo ディレクトリにのみ影響を与えると思います。しかし、js モジュールを組み合わせたカスタム dojo/dijit/dojox ファイルを作成しているため、リソース ディレクトリはありません。カスタム・ビルドの後、手動で dojo ディレクトリーに移動し、dojo/resources ディレクトリーを移動して、残りの dojo ディレクトリーを破棄する必要がありますか? dojo/dijit 層が構築されたときに、カスタム dojo.js 層ファイルで使用するために dojo dir でアクセス可能な依存 img および css ファイルを取得する方法がわかりません。
ここに私のビルドプロファイルがあります:
var profile = {
basePath: "./",
//releaseDir: "irb-release",
action: "release",
cssOptimize: "comments",
stripConsole: 'all',
selectorEngine: 'acme',
layerOptimize: 'closure',
optimize: 'closure',
mini: true,
packages:[
{ name: "dojo", location: "../libs/dojo" },
{ name: "dijit", location: "../libs/dijit" },
{ name: "dojox", location: "../libs/dojox" },
{ name: "dgrid", location: "../libs/dgrid" },
{ name: "put-selector", location: "../libs/put-selector" },
{ name: "xstyle", location: "../libs/xstyle" },
{ name: "myPkg", location: "../libs/myPkg" },
{ name: "irb", location: "../irb" }
],
layers: {
"release/irb/libs/dojo": {
include: ["dojo/dojo", "dijit/dijit", "dojox/app/main"],
boot: true,
customBase: true
},
"release/irb/libs/myPkg": {
include: [
"myPkg/dialog/MessageBox",
"myPkg/grids/FilterGrid",
"myPkg/util/WidgetMonitor",
"myPkg/controllers/BorderLayout",
"myPkg/controllers/UnloadViewController"
],
includeLocales: [ 'en-us' ]
},
"release/irb/libs/store/Memory": {
include: [ "dojo/store/Memory" ]
},
"release/irb/libs/store/Observable": {
include: [ "dojo/store/Observable" ]
},
"irb/irb": {
include: [
"irb/irb",
"dojox/app/View",
"dojox/css3/transit",
"dojox/app/controllers/Load",
"dojox/app/controllers/Transition",
"dojox/app/controllers/History"
]
}
},
staticHasFeatures: {
// The trace & log APIs are used for debugging the loader, so we do not need them in the build.
'dojo-trace-api': 0,
'dojo-log-api': 0,
// This causes normally private loader data to be exposed for debugging. In a release build, we do not need
// that either.
'dojo-publish-privates': 0,
// This application is pure AMD, so get rid of the legacy loader.
'dojo-sync-loader': 0,
// `dojo-xhr-factory` relies on `dojo-sync-loader`, which we have removed.
'dojo-xhr-factory': 0,
// We are not loading tests in production, so we can get rid of some test sniffing code.
'dojo-test-sniff': 0
}
};
更新:これは私のディレクトリ構造です。dojox/app 構造に基づく:
/(webroot)
/irb
/controllers
/res
/css
/img
/views
build.sh
config.json
index.html
irb.js
package.js
package.json
release.profile.js
/libs
/dgrid
/dijit
/dojo
/dojox
/myPkg
/put-selector
/util
/xstyle
ビルドには、dojox/app の例に基づいた build.sh ファイルを使用しますが、それが呼び出す内部コマンド ラインは次のとおりです。
node "/home/(user)/(project ... path)/(webroot)/libs/dojo/dojo.sh"
load=build
--require "/home/(user)/(project ... path)/(webroot)/irb/irb.js"
--profile "/home/(user)/(project ... path)/(webroot)/irb/release.profile.js"
--appConfigFile "/home/(user)/(project ... path)/(webroot)/irb/config.json"
--releaseDir "/home/(user)/(project ... path)/(webroot)/build"