Skip to content
No description or website provided.
JavaScript Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Bring your javascript files together. In a peaceful way.


  • Writing massive, single file jquery plugins
  • Writing the same (function(window) { })(window); closure around everything
  • Worrying about supporting all those other loaders and strange systems
  • Thinking that there is no other way!


  • Using multiple files for your javascript projects
  • Realizing that your source files don't have to be your distributed files
  • Use simple common.js require syntax since you wanted a single file anyway
  • Making it easier to maintain your javascript code.
  • No setup required. No package.json required
  • Saying NO to poor client side organization in your repos and start using reunion today!


Node users:

npm install reunion -g

Ruby folks:

gem install reunion


Using reunion is the simplest thing you will do. ever.

reunion /path/to/your/client/lib.js > /path/to/your/client/dist/lib.js

That's it! Reunion will output to stdout your lib.js as well as include any local "dependencies" found through your "require" calls.

commonjs requires in 2 seconds

Basic Premise: Files are modules. module.exports exposes what you want to share.

foo.js (main project file)

// set local variable bar to the "module" bar.js (no extension needed)
// this variable can be called anything (usually similar to the string modulename for sanity)
var bar = require('./bar');

// we can now access anything in bar we exported

// by default, the module.exports is an empty object {}
// you can override it with any other valid js type (object, function, string, etc...)
module.exports = function() {
    return bar.say() + bar.my_constant;

// since we don't export this, this variable is private to the file (our "module")
var private;

bar.js (lives next to foo.js)

// if your require a directory
// the resolver will look for an index.js file and load that as the "module"
var baz = require('./foobar');

// this is the same thing as above
var baz = require('./foobar/index');

module.exports.say = function() {

module.exports.my_constant = 42;

index.js (in a folder called foobar next to foo.js)

var Cat = function() {};

Cat.prototype = ...

module.exports = Cat;


Take a look at the following projects which I have ported to use reunion. Look at how much easier the code is to read, follow, and maintain!

Try porting over some of your small projects/client side libs! Super simple. If you want help porting, just ask :)

makefile magic

Add the following snippets of code to your makefile to build your distribution files.

# `make dist` to package for distribution, deps do the rest
dist: dist/awesome_lib.min.js

# assuming your main source file lives at `awesome_lib.js` in the project root
dist/awesome_lib.js: awesome_lib.js
    reunion --ns awesome_lib $< > $@

# minification courtesy of googlz
dist/awesome_lib.min.js: dist/awesome_lib.js
    url --data-urlencode "js_code@$<" \
        -d "output_info=compiled_code&compilation_level=SIMPLE_OPTIMIZATIONS" \ > $@


Users making more extensive use of npm modules for their client side development should check out the following projects:

Something went wrong with that request. Please try again.