polymerx-cli
Version:
Unlock the power of Polymer 3, Web Components and modern web tools.
80 lines (62 loc) • 2.51 kB
JavaScript
;
exports.__esModule = true;
exports.showStats = showStats;
exports.endMessage = endMessage;
exports.endBuildMessage = endBuildMessage;
exports.detailMessage = detailMessage;
var _chalk = _interopRequireDefault(require("chalk"));
var _cliTable = _interopRequireDefault(require("cli-table"));
var _SizeFormatHelpers = require("webpack/lib/SizeFormatHelpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const log = msg => process.stdout.write(msg);
const beautySize = (size, isOverSizeLimit) => isOverSizeLimit ? _chalk.default.red((0, _SizeFormatHelpers.formatSize)(size)) : _chalk.default.green((0, _SizeFormatHelpers.formatSize)(size));
const stripLoaderPrefix = str => typeof str === 'string' ? str.replace(/(^|\b|@)(\.\/~|\.{0,2}\/[^\s]+\/node_modules)\/\w+-loader(\/[^?!]+)?(\?\?[\w_.-]+|\?({[\s\S]*?})?)?!/g, '') : str;
function showStats(stats) {
const info = stats.toJson('errors-only');
if (stats.hasErrors()) {
info.errors.map(stripLoaderPrefix).forEach(msg => log(_chalk.default.red(msg)));
}
if (stats.hasWarnings()) {
info.warnings.map(stripLoaderPrefix).forEach(msg => log(_chalk.default.yellow(msg)));
}
return stats;
}
function endMessage(statsAssets, error) {
if (error) {
return log(_chalk.default.red('\n\nBuild failed!\n\n'));
}
const assets = statsAssets.sort((a, b) => b.size - a.size).filter(item => !item.name.includes('hot-update')).reduce((acc, {
name,
size,
isOverSizeLimit
}) => acc.concat([[name, beautySize(size, isOverSizeLimit)]]), []);
const table = new _cliTable.default({
style: {
head: ['blue']
},
head: ['Asset', 'Size']
});
table.push(...assets);
log('\n');
log(_chalk.default.green('Compiled successfully!\n\n'));
log(table.toString() + '\n\n');
}
function endBuildMessage(stats, spinner) {
return stats.hasErrors() ? spinner.fail('Build failed!') : spinner.succeed('Compiled!');
}
function detailMessage(err, {
port,
userPort,
serverAddr,
nomodule
}) {
if (err) {
return;
}
if (port !== userPort) {
log(`Port ${_chalk.default.bold(userPort)} is in use, using ${_chalk.default.bold(port)} instead\n\n`);
}
log(_chalk.default.magentaBright(nomodule ? 'You are running a `nomodule` dev task: Firefox, Edge etc.\n' : 'You are running a `module` dev task: Chrome, Safari etc.\n'));
log('Check the application in browser.\n\n');
log(`${_chalk.default.bold('Local:')} ${serverAddr}\n`);
}