Require.js优化器应该将所有文件复制到输出目录中吗?

Ale*_*hek 5 requirejs r.js

我正在尝试在服务器端集成r.js优化器(Apache Sling)并面临一个问题:在解析模块时,它总是在输出目录(dir)下查找它们,而不是在源目录(baseUrlappDir)中查找它们.找到它们然后失败了.

/project/build.js

({
    name: "modules/main",
    dir: "/target",
    baseUrl: "/sources"
})
Run Code Online (Sandbox Code Playgroud)

如果您想知道,根路径/位于服务器的JCR存储库内,而不是文件系统.我也简化了一些例子(希望没有隐瞒问题).

它将正确解析和读取主文件:

/sources/modules/main.js

require(["modules/foo"]);
Run Code Online (Sandbox Code Playgroud)

但是,当它现在尝试解决时modules/foo,它会尝试从而/target/modules/foo.js不是/sources/modules/foo.js像我预期的那样读取它,这不存在并且整个r.js执行失败并停止.

我尝试过使用appDir各种组合,但问题总是一样的.我很确定它与我的集成代码无关......来自文档和Google搜索的AFAIU,它应该在构建优化文件之前将它们复制到目标,或者只是自动从源目录中选择它们.

  • /target在运行r.js之前,我应该将所有原始源文件复制到自己吗?
  • 也许问题是存在baseUrl=/overlay于内部的build.js不同/project
  • 也许r.js还会查看r.js进程的当前工作目录(在我的情况下到目前为止尚未定义)?
  • 输出目录(可以dir)住在外面appDir还是baseUrl

Ale*_*hek 2

回答自己:我让它使用单个输出文件方法out而不是appDiror dir

({
    name: "modules/main",
    baseUrl: "/sources"
    out: "/target/out.js",
})
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它从源中读取所有模块并创建一个模块,/target/out-temp.js然后在完成后移动到该模块/target/out.js

到目前为止,这似乎适合我的需求。