I just released the first version of Cajon. From the README:
for the browser that can load CommonJS/node and AMD modules. It is built
on top of RequireJS.
You can use it to code modules for your project in CommonJS/node style, then
use the RequireJS Optimizer to
build all the modules into an AMD-compliant bundle. This allows you to
then use a small AMD API shim, like
almond, to get nicely optimized code
without needing a full runtime loader.
See the README for more information and restrictions.
Why do this?
This experiment goes along with the latest requirejs 2.0.2 optimizer setting, cjsTranslate, which will automatically convert CommonJS/node modules to have a define() wrapper, so they can be consumed by the optimizer. This would allow you, for example, to build a node command that watched your js lib folder as you did changes to modules in the CommonJS/node format, and build them into an optimized AMD bundle.
End result, if you cannot bring yourself to use AMD:
If you do not want to do builds during your CommonJS/node-based module development, use Cajon. If you like doing builds, you can now use the RequireJS optimizer (with the almond AMD shim) to do that.
To be clear: CommonJS/node modules as-is are not enough for a comprehensive JS module solution. These tools allow you to use them though and fill in the gaps by "compiling down" the code to AMD.