r.js オプティマイザーをサーバー側 ( Apache Sling ) に統合しようとしていますが、1 つの問題に直面しています: モジュールを解決するとき、ソース ディレクトリ(または)内からではなく、常に出力ディレクトリ( dir
)の下でそれらを検索します。それらを見つけることができないため、失敗します。baseUrl
appDir
/project/build.js
({
name: "modules/main",
dir: "/target",
baseUrl: "/sources"
})
ご想像のとおり、ルート パス/
はファイル システムではなく、サーバーの JCR リポジトリ内にあります。また、例を少し単純化しました (うまくいけば、問題を隠すことはありません)。
メインファイルを適切に解決して読み取ります。
/sources/modules/main.js
require(["modules/foo"]);
ただし、解決しようとすると、予想どおりではなく、存在しないものから読み取ろうとし、r.js の実行全体が失敗して停止しますmodules/foo
。/target/modules/foo.js
/sources/modules/foo.js
といろいろな組み合わせを試してみappDir
ましたが、問題はいつも同じです。私はそれが私の統合コードに関連していないと確信しています...ドキュメントとグーグルでAFAIUを調べてみると、最適化されたファイルを構築する前にそれらをターゲットにコピーするか、ソースディレクトリから自動的にそれらを選択する必要があります。
/target
r.js を実行する前に、すべての未加工のソース ファイルを自分自身にコピーする必要がありますか?- おそらく問題は、
baseUrl=/overlay
内部に存在する build.js とは異なること/project
ですか? - たぶん、r.js は r.js プロセスの現在の作業ディレクトリも参照するのでしょうか (私の場合はまだ定義されていません)。
- 出力ディレクトリ (
dir
) は外部appDir
またはに置くことができますかbaseUrl
?