123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- #!/usr/bin/env node
- "use strict";
- require("babel-core");
- var pathExists = require("path-exists");
- var commander = require("commander");
- var kebabCase = require("lodash/kebabCase");
- var options = require("babel-core").options;
- var util = require("babel-core").util;
- var uniq = require("lodash/uniq");
- var each = require("lodash/each");
- var glob = require("glob");
- each(options, function (option, key) {
- if (option.hidden) return;
- var arg = kebabCase(key);
- if (option.type !== "boolean") {
- arg += " [" + (option.type || "string") + "]";
- }
- if (option.type === "boolean" && option.default === true) {
- arg = "no-" + arg;
- }
- arg = "--" + arg;
- if (option.shorthand) {
- arg = "-" + option.shorthand + ", " + arg;
- }
- var desc = [];
- if (option.deprecated) desc.push("[DEPRECATED] " + option.deprecated);
- if (option.description) desc.push(option.description);
- commander.option(arg, desc.join(" "));
- });
- commander.option("-x, --extensions [extensions]", "List of extensions to compile when a directory has been input [.es6,.js,.es,.jsx]");
- commander.option("-w, --watch", "Recompile files on changes");
- commander.option("--skip-initial-build", "Do not compile files before watching");
- commander.option("-o, --out-file [out]", "Compile all input files into a single file");
- commander.option("-d, --out-dir [out]", "Compile an input directory of modules into an output directory");
- commander.option("-D, --copy-files", "When compiling a directory copy over non-compilable files");
- commander.option("-q, --quiet", "Don't log anything");
- var pkg = require("../../package.json");
- commander.version(pkg.version + " (babel-core " + require("babel-core").version + ")");
- commander.usage("[options] <files ...>");
- commander.parse(process.argv);
- if (commander.extensions) {
- commander.extensions = util.arrayify(commander.extensions);
- }
- var errors = [];
- var filenames = commander.args.reduce(function (globbed, input) {
- var files = glob.sync(input);
- if (!files.length) files = [input];
- return globbed.concat(files);
- }, []);
- filenames = uniq(filenames);
- each(filenames, function (filename) {
- if (!pathExists.sync(filename)) {
- errors.push(filename + " doesn't exist");
- }
- });
- if (commander.outDir && !filenames.length) {
- errors.push("filenames required for --out-dir");
- }
- if (commander.outFile && commander.outDir) {
- errors.push("cannot have --out-file and --out-dir");
- }
- if (commander.watch) {
- if (!commander.outFile && !commander.outDir) {
- errors.push("--watch requires --out-file or --out-dir");
- }
- if (!filenames.length) {
- errors.push("--watch requires filenames");
- }
- }
- if (commander.skipInitialBuild && !commander.watch) {
- errors.push("--skip-initial-build requires --watch");
- }
- if (errors.length) {
- console.error(errors.join(". "));
- process.exit(2);
- }
- var opts = exports.opts = {};
- each(options, function (opt, key) {
- if (commander[key] !== undefined) {
- opts[key] = commander[key];
- }
- });
- opts.ignore = util.arrayify(opts.ignore, util.regexify);
- if (opts.only) {
- opts.only = util.arrayify(opts.only, util.regexify);
- }
- var fn = void 0;
- if (commander.outDir) {
- fn = require("./dir");
- } else {
- fn = require("./file");
- }
- fn(commander, filenames, exports.opts);
|