UNPKG

requisite

Version:

A cosmic javascript bundler.

238 lines (215 loc) 7.19 kB
// Generated by CoffeeScript 1.10.0 var absolutePath, args, bundleFile, clone, error, extname, file, formatDate, fs, help, i, j, len, len1, opt, opts, out, outputBundle, outputName, path, ref, ref1, ref2, ref3, requireAs, requisite, seen, toRegex, version; clone = require('clone'); fs = require('fs'); path = require('path'); toRegex = require('to-regexp'); requisite = require('../lib'); formatDate = require('../lib/utils').formatDate; 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 -a, --async prelude should support async requires\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:path> force inclusion of module found at path\n -g, --global global require\n -m, --minify minify output\n --minifier minifier to use\n -o, --output <file> write bundle to file instead of stdout, {} may be used as a placeholder\n -p, --prelude <file> file to use as prelude\n --no-prelude exclude prelude from bundle\n --source-map enable source maps\n --prelude-only only output prelude\n -r, --resolve <module:path> do not automatically resolve module, use provided path\n -s, --strict add \"use strict\" to each bundled module\n --strip-debug strip `alert`, `console`, `debugger` statements\n -w, --watch write bundle to file and and recompile on file changes\n -x, --exclude <glob|regex> exclude modules matching glob or regex from being automatically parsed\n --base path all requires should be relative to\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 = { async: false, bare: false, base: null, dedupe: false, exclude: [], "export": null, files: [], include: {}, minify: false, output: [], prelude: null, resolveAs: {}, sourceMap: false, strict: false, stripDebug: 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 '-a': case '--async': opts.async = true; break; case '-b': case '--bare': opts.bare = true; break; case '-d': case '--dedupe': opts.dedupe = true; break; case '-g': case '--global': opts.globalRequire = true; break; case '-x': case '--exclude': opts.exclude.push(args.shift()); break; case '-e': case '--export': opts["export"] = args.shift(); break; case '-i': case '--include': if (opts.include == null) { opts.include = {}; } ref = args.shift().split(':'), requireAs = ref[0], absolutePath = ref[1]; opts.include[requireAs] = absolutePath; break; case '-m': case '--minify': opts.minify = true; break; case '--minifier': opts.minifier = args.shift(); break; case '-o': case '--output': opts.output.push(args.shift()); break; case '-p': case '--prelude': opts.prelude = args.shift(); break; case '--no-prelude': opts.prelude = false; break; case '--source-map': opts.sourceMap = true; break; case '--prelude-only': opts.preludeOnly = true; break; case '-r': case '--resolve': case '--resolve-as': if (opts.resolveAs == null) { opts.resolveAs = {}; } ref1 = args.shift().split(':'), requireAs = ref1[0], absolutePath = ref1[1]; opts.resolveAs[requireAs] = absolutePath; break; case '-s': case '--strict': opts.strict = true; break; case '--strip-debug': opts.stripDebug = true; break; case '-w': case '--watch': opts.watch = true; break; case '--base': opts.base = args.shift(); break; default: if (opt.charAt(0) === '-') { error("Unrecognized option: '" + opt + "'"); } opts.files.push(opt); } } if (!(opts.files.length || opts.preludeOnly)) { help(); } if (opts.watch && !opts.output.length) { error('Output must be specified when using watch.'); } if (opts.files.length > 1 && (opts.output.indexOf('{}')) === -1) { seen = {}; ref2 = opts.output; for (i = 0, len = ref2.length; i < len; i++) { out = ref2[i]; if (seen[out] != null) { error('Output filenames overlap, perhaps you meant -o {}.js?'); } seen[out] = true; } } if (opts.dedupe) { ref3 = opts.files; for (j = 0, len1 = ref3.length; j < len1; j++) { file = ref3[j]; extname = path.extname(file); opts.exclude.push("^" + (file.replace(extname, '')) + "$"); } } if (opts.exclude.length > 0) { opts.exclude = toRegex(opts.exclude); } outputName = function(filename, output) { return output.replace('{}', filename).replace(/\.\w+$/, '.js').replace(/\.\/\//, ''); }; outputBundle = function(bundle, opts) { if (opts.output != null) { return fs.writeFileSync(outputName(bundle.normalizedPath, opts.output), bundle.toString(opts, 'utf8')); } else { return console.log(bundle.toString(opts)); } }; bundleFile = function(file, moduleCache) { var _opts; if (moduleCache == null) { moduleCache = {}; } if (file == null) { return; } _opts = clone(opts); _opts.entry = file; _opts.moduleCache = moduleCache; _opts.output = opts.output.shift(); if (_opts.dedupe) { _opts.prelude = false; } if (!opts.watch) { return requisite.bundle(_opts, function(err, bundle) { if (err != null) { return console.error(err.stack); } outputBundle(bundle, _opts); moduleCache = opts.dedupe ? bundle.moduleCache : {}; return bundleFile(opts.files.shift(), moduleCache); }); } else { return requisite.watch(_opts, function(err, bundle, filename) { if (err != null) { return console.error(err.stack); } if (filename != null) { console.log((formatDate()) + " - recompiling, " + filename + " changed"); } else { console.log((formatDate()) + " - compiled " + (outputName(bundle.normalizedPath, _opts.output))); } outputBundle(bundle, _opts); moduleCache = opts.dedupe ? bundle.moduleCache : {}; return bundleFile(opts.files.shift(), moduleCache); }); } }; bundleFile(opts.files.shift()); //# sourceMappingURL=cli.js.map