single

synchronous require for browsers

npm install single
24 downloads in the last month

SingleJS

combine modules into single js for browser running

Introduce

If you use nodejs, you already know how to export and require modules.

Only you need to learn is how to combine these modules using singlejs.

Install

Install singlejs by npm

$ npm install -g single

Quick Start

File structs

./
├── lib/
│   └── tool.js
├── index.html
├── index.js
└── [others.js]

tool.js

exports.square = function(num) {
    return num * num;
};

index.js

var tool = require('./lib/tool');
exports.test = function() {
    console.log('success: 2*2 = ' + tool.square(2));
};

Combine it!

$ singlec index.js lib/*.js -o script.js

Use the combined js in html index.html

<script src="script.js"></script>
<script>
    var index = require('index');
    index.test(); //log 'success'

    //require('others'); //other page use
    //require('lib/tool'); //tool.js is also available
</script>

Features

  • CommonJS Modules/1.1.1 Spec implemented
  • Watch mode(real-time update when files changed
  • Build in compress(use UglifyJS
  • Asterisker path support(eg. { "path": "lib/*.js", "alias": "*" }
  • Really light weight
  • and...?

Usage

Usage: singlec [options] [ -o script.js ] files.js..
   or: singlec [options] [ -o script.js ] -i single.json

Options:
  -o, --outfile <file> place output in file
  -i, --input <file>   define options and module list in a json
                       default use single.json as input if exist
  -w, --watch          watch mode
  -x, --compress       compress with UglifyJS
  --charset <string>   file\'s charset, default utf8

  -v, --version        print version
  -h, --help           print help'

Input file

example

single.json

{
  "outfile" : "script.js",
  "compress": true,
  "charset" : "utf8",
  "watch"   : true,
  "modules" : [
    { "path": "lib/jquery-1.8.2-min.js", "alias": "jquery", "compress": false },
    { "path": "lib/underscore.js"},
    { "path": "page/*.js", "alias": "page-*"}
  ]
}

run $ singlec

UPCOMING

  • combine and export main module as a normal script(eg. singlec deps/*.js util.js --main util -o util.js
  • input file reloader

License

See LICENSE file.

Copyright (c) 2012 rhyzx

npm loves you