UNPKG

sb-babel-cli

Version:
96 lines (95 loc) 5.31 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const os_1 = __importDefault(require("os")); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const commander_1 = __importDefault(require("commander")); const __1 = __importDefault(require("..")); const helpers_1 = require("../helpers"); const manifest = JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(__dirname, '../../package.json'), 'utf8')); const NODE_ARGS = [ ['debug-port', 'debugPort', true], ['inspect-port', 'inspectPort', true], ['inspect', 'inspect', false], ['inspect-brk', 'inspectBrk', false], ['inspect-publish-uid', 'inspectPublishUid', true], ['enable-source-maps', 'enableSourceMaps', false], ]; commander_1.default .version(manifest.version) .description(manifest.description) .usage('[options] <source directory>') .option('-w, --watch', 'Watch files for changes') .option('--root <directory>', 'Root directory for compilation; where presets and CLI config is resolved from (defaults to cwd)') .option('--cache-directory <directory>', 'Directory to store the cache ".sb-babel-cli" (defaults to homedir)') .option('--ignored <glob>', 'Ignored files and directories that match the given glob (You can specify --ignored <glob> multiple times)', (value, previous) => previous.concat([value]), []) .option('--ignored-for-restart <glob>', 'These files are transpiled, but do not cause restart (You can specify --ignored-for-restart <glob> multiple times)', (value, previous) => previous.concat([value]), []) .option('--source-maps [true|false|inline]', 'Generate source maps for transpiled files', (value) => value !== 'inline' ? value === 'true' : 'inline') .option('--reset-cache', 'Re-transpile all files ignoring cache') .option('--keep-extra-files', 'Do NOT delete extra files in the output directory') .option('-o, --output-directory <directory>', 'Output directory to write transpiled files to') .option('--output-file-extension <extension>', 'Output file extension (defaults to .js)') .option('-x, --execute <entryFile>', 'Relative path of file to execute (only supported in watcher mode)') .option('--execute-delay <delay>', 'Delay in ms in between restarts of executed file (defaults to 1000ms)', (value) => parseInt(value, 10) || 1000) .option('--extensions <exts>', 'Comma separated extensions to process through the CLI (defaults to .js)', (value) => value .split(',') .map((item) => item.trim()) .filter(Boolean)) .option('--no-load-config', 'Disables loading of "sb-config-file" from package.json (in --root)') .option('--print-config', 'Print the config being used (for debugging only)') .option('--silent', 'Disable log outputs') .on('--help', () => { console.log('\nArguments after -- will be passed as-are to programs executed through -x'); }) .combineFlagAndOptionalValue(true); NODE_ARGS.forEach(([nodeArg, , hasOption]) => { commander_1.default.option(`--${nodeArg}${hasOption ? ' <arg>' : ''}`, 'Passthrough arg for Node.js runtime for programs executed through -x'); }); commander_1.default.parse(process.argv); if (commander_1.default.args.length < 1) { commander_1.default.outputHelp(); process.exit(1); } const nodeArgs = NODE_ARGS.filter((item) => commander_1.default[item[1]] != null) .map((item) => (item[2] ? [`--${item[0]}`, commander_1.default[item[1]]] : [`--${item[0]}`])) .flat(); const specifiedArgs = []; function optionalGet(obj, key, defaultValue) { if (obj[key] == null) { return defaultValue; } specifiedArgs.push(key); return obj[key]; } const configPartial = { sourceDirectory: commander_1.default.args[0], outputDirectory: optionalGet(commander_1.default, 'outputDirectory', ''), rootDirectory: optionalGet(commander_1.default, 'root', process.cwd()), cacheDirectory: optionalGet(commander_1.default, 'cacheDirectory', os_1.default.homedir()), watch: optionalGet(commander_1.default, 'watch', false), ignored: optionalGet(commander_1.default, 'ignored', []), ignoredForRestart: optionalGet(commander_1.default, 'ignoredForRestart', []), sourceMaps: optionalGet(commander_1.default, 'sourceMaps', false), resetCache: optionalGet(commander_1.default, 'resetCache', false), keepExtraFiles: optionalGet(commander_1.default, 'keepExtraFiles', false), outputFileExtension: optionalGet(commander_1.default, 'outputFileExtension', '.js'), execute: optionalGet(commander_1.default, 'execute', ''), executeDelay: optionalGet(commander_1.default, 'executeDelay', 250), extensions: optionalGet(commander_1.default, 'extensions', ['.js']), loadConfig: optionalGet(commander_1.default, 'loadConfig', true), printConfig: optionalGet(commander_1.default, 'printConfig', false), silent: optionalGet(commander_1.default, 'silent', false), nodeArgs, programArgs: commander_1.default.args.slice(1), }; __1.default({ ...configPartial, specifiedArgs, }).catch((error) => { helpers_1.logError(error); process.exit(1); });