concatter

Single-file app js concat utility

Concatter

Helper utility to build single-file JavaScript applications. It uses NodeJS-styled require function calls to resolve file concatenation order. It is quite experimental at the moment and does not support cyclic dependencies.

$ concatter --help
 
  Usage: concatter [options]
 
  Options:
 
    -h, --help             output usage information
    -b, --base <path>      base path for modules
    -i, --indent <indent>  indent for module wrapping
    -o, --output <path>    name of the output file
    -V, --version          output the version number

Lets say we have project with the following structure:

example/
|-- module1
|   `-- a.js
|-- module2
|   `-- b.js
`-- module3
    `-- c.js

and a.js, b.js, c.js are following:

a.js:

var b = require('../module2/b');
 
exports.a = function() {
    console.log(b.b());
};

b.js:

var c = require('../module3/c');
 
exports.c = function() {
    console.log(c.c());
};

c.js:

exports.c = function() {
    console.log('c');
};

then the project is compiled to a single file using the command concatter --base example which results in the following output:

module1 = {};
module1.= {};
module2 = {};
module2.= {};
module3 = {};
module3.= {};
 
module3.= (function(exports) {
    exports.c = function() {
        console.log('c');
    };
 
    return exports;
})({});
 
module2.= (function(exports) {
    var c = module3.c;
 
    exports.c = function() {
        console.log(c.c());
    };
 
    return exports;
})({});
 
module1.= (function(exports) {
    var b = module2.b;
 
    exports.a = function() {
        console.log(b.b());
    };
 
    return exports;
})({});