bundlewatch
Version:
Keep watch of your bundle size
95 lines (94 loc) • 4.63 kB
JavaScript
;
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;
});