UNPKG

beam-cli

Version:

A beautifully simple CLI for running Lighthouse audits on a statically generated (SSG) website

53 lines (52 loc) 1.69 kB
import chalk from 'chalk'; import { printTable } from 'console-table-printer'; const tableColumnScoreNames = { performance: 'Perf', seo: 'SEO', accessibility: 'Acc', 'best-practices': 'Best-P', pwa: 'PWA', }; const colourScore = (score) => { /* eslint-disable unicorn/no-nested-ternary */ const chalkColour = score < 0.5 ? chalk.red : score < 0.9 ? chalk.yellow : chalk.green; /* eslint-enable unicorn/no-nested-ternary */ const text = Math.round((score ?? 0) * 100) .toString() .padStart(3, ' '); return chalkColour(text); }; export const printRunnerSummary = (results) => { console.log(''); const tableResults = []; for (const slugName in results.data) { if (!Object.prototype.hasOwnProperty.call(results.data, slugName)) continue; const run = results.data[slugName]; if (!run) continue; const categories = [ 'performance', 'seo', 'accessibility', 'best-practices', 'pwa', ]; /* eslint-disable @typescript-eslint/naming-convention */ const row = { URL: run.url, TYPE: run.mobile ? 'Mobile' : 'Desktop', Size: run.sizeDisplay.split('•')[1] ?? '', }; /* eslint-enable @typescript-eslint/naming-convention */ for (const cat of categories) { const score = run.scores[cat]; if (score) { const columnName = tableColumnScoreNames[cat]; row[columnName] = colourScore(score); } } tableResults.push(row); } printTable(tableResults); };