RequireJS / r.js 'baseURL' Property Seemingly Ignored

Viewed 871

I am trying to use the r.js optimizer to build all of my dependencies into a single file. Here is my file structure:

app
  bin
  src
    css
      main.css
    js
      libs
        raphael-2.1.0
          eve.js
          raphael.amd.js
          raphael.core.js
          raphael.svg.js
          raphael.vml.js
        jquery-1.8.0.js
        require-2.0.5.js
      main.js
    build.js
    index.html
  r.js

Here are the contents of build.js:

({
  baseURL: 'js',
  dir: '../bin',
  paths: {
    'jquery': 'libs/jquery-1.8.0',
    'raphael': 'libs/raphael-2.1.0/raphael.amd'
  },
  name: 'main',
  removeCombined: true
})

The 'libs/raphael-2.1.0/raphael.amd' dependency loads everything else in the raphael-2.1.0 directory. The app works as expected if I visit app.local/src, it loads the modules at runtime via require with a single script tag in my index.html file like this:

<script src="js/libs/require-2.0.5.js" data-main="js/main.js" type="text/javascript" charset="utf-8"></script>

However, if I try to run the command node r.js -o src/build.js from app, I get an error like:

Error: ERROR: module path does not exist: /app/src/main.js for module named: main. Path is relative to: /app
at /app/r.js:14215:31

... and everything gets copied into bin "as is". If I add 'main': 'js/main' to the paths object, then r.js can't find jquery and raphael, if I ad js/ to the jquery and raphael paths then libs/raphael-2.1.0/rapheal.amd's dependency declarations are wrong. If I update those, then everything builds as expected, but now the app at app.local/src/index.html is broken. Also, I thought that was the point of having a baseURL property in the build file no? It looks to me like baseURL is being ignored. What am I doing wrong?

1 Answers
Related