Fetching contributors…
Cannot retrieve contributors at this time
93 lines (68 sloc) 2.55 KB

Bundle client side code with inline dependency declaration syntax

Do not use this. Use browserify instead.


# in your source code, declare the files you depend on:

#depend "some_js_file"
#depend "or_some_coffee_file"
#depend "even_coco_is_supported"
#depend "some/path/and_livescript"

# leave off the top-level function wrapper
#depend "vendor/Audiolet" bare

# some code using the files here.

In JavaScript, the //depend directive is used instead of #depend.

Be sure to install the languages you wish to use with npm install -g.

Command line usage

When installed with npm install jspackage -g, a command line tool called jspackage will be made available.

Usage: jspackage input_file output_file [options]

Available options:
  -h, --help       shows this help section
  -w, --watch      watch source files and recompile when any change
  -l, --lib PATH   add an additional search directory for source files


  • File extensions are automatically resolved, and in fact are not allowed in depend statements. This goes for the input_file too.
  • Files will only be included once in the resulting code, regardless of how many times a file is depended upon.
  • Compiling CoffeeScript, JavaScript, Coco, LiveScript, and Iced CoffeeScript source files are included out of the box. You can add more to the compile.extensions object.
    • Or add support to the bottom of lib/jspackage.js and submit a pull request.
  • Includes a --watch mode which automatically recompiles source files when they change.
  • Ability to supply more source code search paths with --lib.

Server example

http = require 'http'
{compile} = require 'jspackage'

server = http.createServer (req, res) ->

  compile {mainfile}, (err, compiled_code) ->
    if err
      res.end 'throw unescape("' + escape(err.toString()) + '");'
      res.end compiled_code


Out-of-the-box supported languages

  • JavaScript
  • Coffee-Script
  • LiveScript
  • Coco
  • Iced-Coffee-Script

To add out-of-the-box support for another language, add it to the bottom of lib/jspackage.js and submit a pull request.

To add support by wrapping the code, add an entry to the extensions object:

{extensions} = require 'jspackage'
extensions['.lua'] =
  require: 'npm-lua-package'
  compile: (code, options) ->
    require('npm-lua-package').compile(code, bare: options.bare)
  depend_re: /^--depend "(.+)"( bare)?$/gm