NibJS
nib.js - Package and embed node.js or coffeescript libraries in the browser
nib.js is a NibJS javascript library allowing to maintain javascript/coffeescript projects ala 'node.js' (modules, exports, require) while also targetting a web browser as execution platform. It contains a simple packager command (nibjs) that will convert your sources to a single and minified .js file to be embedded in the browser. Node.js's exports and require are correctly bounded.
Getting started
gem install nibjs
nibjs --help
How to use it
Let assume that your project has the structure below.
mylib/
dist/
src/
foo.[js,coffee] # exports.Foo = ...
bar.[js,coffee] # require('./foo')
index.[js,coffee] # exports.X = ...
spec/
foo_spec.[js,coffee]
bar_spec.[js,coffee]
package.json
EXAMPLE 1 (embedded javascript):
In a shell:
# if the sources are .js
nibjs --libname=mylib --output=mylib.js src
# if the sources are .coffee
nibjs --coffee --libname=mylib --output=mylib.js src
In the browser:
<script src="js/nibjs.js" type="text/javascript">
<script src="js/mylib.js" type="text/javascript">
<script>
var mylib = NibJS.require('mylib')
</script>
EXAMPLE 2 (embedded coffeescript):
In a shell:
nibjs --coffee --no-coffee-compile --libname=mylib --output=mylib.coffee src
In the browser:
<script src="js/coffee-script.js" type="text/javascript">
<script src="js/nibjs.js" type="text/javascript">
<script src="js/mylib.coffee" type="text/coffeescript">
<script>
/* But be warned of coffeescript's issue 1054
https://github.com/jashkenas/coffee-script/issues/#issue/1054 */
var mylib = NibJS.require('mylib')
</script>
See also
This project is related to CommonJS Module specification. In a sense, it is an offline "compiler" implementation of the version 1.0 of that specification (not even complete). I'll strongly consider any patch that would lead to respecting such specification more correctly!