requisite
Version:
A cosmic javascript bundler.
158 lines (142 loc) • 4.81 kB
JavaScript
// Generated by CoffeeScript 1.7.1
var absolutePath, args, err, error, file, fs, help, module, opt, opts, path, requireAs, requisite, version, writeBundle, _fn, _i, _len, _ref, _ref1;
fs = require('fs');
path = require('path');
requisite = require('../lib');
error = function(message) {
console.log(message);
return process.exit(1);
};
help = function() {
console.log("\nUsage: requisite [options] [files]\n\nOptions:\n\n -h, --help display this help\n -v, --version display version\n -b, --bare compile without a top-level function wrapper\n -d, --dedupe deduplicate modules (when multiple are specified)\n -e, --export <name> export module as <name>\n -i, --include [module, ...] additional modules to include, in <require as>:<path to module> format\n -m, --minify minify output\n -o, --output <file> write bundle to file instead of stdout, {} can be used as a placeholder.\n -p, --prelude <file> file to use as prelude\n --no-prelude exclude prelude from bundle\n -s, --strict add \"use strict\" to each bundled module.\n -w, --watch write bundle to file and and recompile on file changes\n -x, --exclude <regex> regex to exclude modules from being parsed\n\nExamples:\n\n # bundle javascript file and all it's dependencies\n $ requisite module.js -o bundle.js\n\n # bundle several modules, appending .bundle.js to output\n $ requisite *.js -o {}.bundle.js");
return process.exit(0);
};
version = function() {
console.log(require('../package').version);
return process.exit(0);
};
opts = {
bare: false,
exclude: null,
"export": null,
files: [],
include: [],
minify: false,
output: null,
prelude: null,
strict: false,
watch: false
};
args = process.argv.slice(2);
while (opt = args.shift()) {
switch (opt) {
case '-h':
case '--help':
help();
break;
case '-v':
case '--version':
version();
break;
case '-b':
case '--bare':
opts.bare = true;
break;
case '-x':
case '--exclude':
opts.exclude = new RegExp(args.shift());
break;
case '-e':
case '--export':
opts["export"] = args.shift();
break;
case '-i':
case '--include':
while (((module = args.shift()) != null) && module.charAt(0) !== '-') {
try {
_ref = module.split(':'), requireAs = _ref[0], absolutePath = _ref[1];
opts.include[requireAs] = absolutePath;
} catch (_error) {
err = _error;
help(1, 'Invalid argument to include');
}
}
break;
case '-m':
case '--minify':
opts.minify = true;
break;
case '-o':
case '--output':
opts.output = args.shift();
break;
case '-p':
case '--prelude':
opts.prelude = args.shift();
break;
case '--no-prelude':
opts.prelude = false;
break;
case '-s':
case '--strict':
opts.strict = true;
break;
case '-w':
case '--watch':
opts.watch = true;
break;
default:
if (opt.charAt(0) === '-') {
error('Unrecognized option');
}
opts.files.push(opt);
}
}
if (!opts.files.length) {
help();
}
if (opts.watch && (opts.output == null)) {
error('Output must be specified when using watch.');
}
if (opts.files.length > 1 && (opts.output.indexOf('{}')) === -1) {
error('Output filenames overlap, perhaps you meant -o {}.js?');
}
writeBundle = function(bundle) {
var ext, extout, filename, output;
if (opts.output != null) {
filename = path.basename(bundle.requiredAs);
ext = path.extname(filename);
extout = path.extname(opts.output);
if (ext === extout) {
filename = filename.replace(ext, '');
}
output = opts.output.replace('{}', filename);
return fs.writeFileSync(output, bundle.toString(opts, 'utf8'));
} else {
return console.log(bundle.toString(opts));
}
};
_ref1 = opts.files;
_fn = function(file, opts) {
opts = JSON.parse(JSON.stringify(opts));
opts.entry = file;
if (!opts.watch) {
return requisite.bundle(opts, function(err, bundle) {
return writeBundle(bundle);
});
} else {
return requisite.watch(opts, function(err, bundle, filename) {
if (filename != null) {
console.log("" + (/\d{2}:\d{2}:\d{2}/.exec(new Date())[0]) + " - recompiling, " + filename + " changed");
} else {
console.log("" + (/\d{2}:\d{2}:\d{2}/.exec(new Date())[0]) + " - compiled " + opts.output);
}
return writeBundle(bundle);
});
}
};
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
file = _ref1[_i];
_fn(file, opts);
}
//# sourceMappingURL=cli.map