UNPKG

bundlewatch

Version:
95 lines (94 loc) 4.63 kB
#!/usr/bin/env node "use strict"; var _commander = _interopRequireDefault(require("commander")); var _chalk = _interopRequireDefault(require("chalk")); var _determineConfig = _interopRequireDefault(require("./determineConfig")); var _logger = _interopRequireDefault(require("../logger")); var _app = _interopRequireWildcard(require("../app")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const prettyPrintResults = fullResults => { _logger.default.log(''); fullResults.forEach(result => { const filePath = _chalk.default.italic(result.filePath) + ':'; if (result.error) { _logger.default.log(`${_chalk.default.red('ERROR')} ${filePath} ${result.error}`); return; } if (result.status === _app.STATUSES.FAIL) { _logger.default.log(`${_chalk.default.redBright('FAIL')} ${filePath} ${result.message}`); return; } if (result.status === _app.STATUSES.WARN) { _logger.default.log(`${_chalk.default.yellowBright('WARN')} ${filePath} ${result.message}`); return; } _logger.default.log(`${_chalk.default.greenBright('PASS')} ${filePath} ${result.message}`); }); _logger.default.log(''); }; const main = async () => { const config = (0, _determineConfig.default)(_commander.default); if (config.files && config.files.length > 0) { const results = await (0, _app.default)(config); if (results.url) { _logger.default.log(''); _logger.default.log(`${_chalk.default.cyanBright('Result breakdown at:')} ${results.url}`); } prettyPrintResults(results.fullResults); if (results.status === _app.STATUSES.FAIL) { _logger.default.log(_chalk.default.redBright(`bundlewatch FAIL`)); _logger.default.log(results.summary); _logger.default.log(''); return 1; } if (results.status === _app.STATUSES.WARN) { _logger.default.log(_chalk.default.redBright(`bundlewatch WARN`)); _logger.default.log(results.summary); _logger.default.log(''); return 0; } _logger.default.log(_chalk.default.greenBright(`bundlewatch PASS`)); _logger.default.log(results.summary); _logger.default.log(''); return 0; } _logger.default.error(`Configuration missing: Run ${_chalk.default.italic('bundlewatch --help')} for examples and options Documentation available at: http://bundlewatch.io/`); return 1; }; const mainSafe = async () => { try { const errorCode = await main(); return errorCode; } catch (error) { if (error.type === 'ValidationError') { _logger.default.fatal(error.message); return 1; } _logger.default.fatal(`Uncaught exception`, error); return 1; } }; _commander.default.usage('[options] <filePathGlobs ...>').option('--config [configFilePath]', 'file to read configuration from, if used all options are blown away').option('--max-size [maxSize]', 'maximum size threshold (e.g. 3kb)').option('--compression [compression]', 'specify which compression algorithm to use').option('--normalize [regex]', 'normalize filenames via regex, any match will be removed'); _commander.default.on('--help', () => { _logger.default.log(''); _logger.default.log(' Examples:'); _logger.default.log(''); _logger.default.log(' Read configuration from package.json'); _logger.default.log(' $ bundlewatch '); _logger.default.log(''); _logger.default.log(' Read configuration from file'); _logger.default.log(' $ bundlewatch --config internals/bundlewatch.config.js'); _logger.default.log(''); _logger.default.log(' Use command line'); _logger.default.log(' $ bundlewatch --max-size 100KB ./src/*.js /lib/*.js'); _logger.default.log(''); _logger.default.log(''); }); _commander.default.parse(process.argv); mainSafe().then(errorCode => { process.exitCode = errorCode; });