mirror of
https://github.com/nkoehring/250kb-club.git
synced 2025-04-19 13:49:04 +02:00
add logging
This commit is contained in:
parent
1e430fd398
commit
d31ac22c55
3 changed files with 63 additions and 11 deletions
|
@ -1,21 +1,43 @@
|
|||
const fs = require('fs')
|
||||
const chalk = require('chalk')
|
||||
const phantomas = require('phantomas')
|
||||
const pageData = require('./src/pages.json')
|
||||
|
||||
const INPUT_FILE = './pages.txt'
|
||||
const OUTPUT_FILE = './src/pages.json'
|
||||
const RECHECK_THRESHOLD = 60*60*24*7*1000 // recheck pages older than 1 week
|
||||
const REJECT_THRESHOLD = 256000
|
||||
|
||||
function calcWeights (url, metrics) {
|
||||
const m = metrics
|
||||
const LOGGING_PREFIXES = {
|
||||
info: `[${chalk.bold.white('II')}]`,
|
||||
warn: `[${chalk.bold.yellow('WW')}]`,
|
||||
error: `[${chalk.bold.red('EE')}]`,
|
||||
debug: `[${chalk.bold.white('DD')}]`,
|
||||
}
|
||||
|
||||
function log (level='info') {
|
||||
const args = [...arguments].slice(1)
|
||||
let prefix = LOGGING_PREFIXES[level]
|
||||
console.log(prefix, ...args)
|
||||
}
|
||||
function info () { log('info', ...arguments) }
|
||||
function warn () { log('warn', ...arguments) }
|
||||
function error () { log('error', ...arguments) }
|
||||
function debug () { log('debug', ...arguments) }
|
||||
|
||||
function calcWeights (url, m) {
|
||||
const extraWeight = m.cssSize + m.jsSize + m.webfontSize + m.otherSize
|
||||
const contentWeight = m.htmlSize + m.jsonSize + m.imageSize + m.base64Size + m.videoSize
|
||||
|
||||
if (m.contentSize > REJECT_THRESHOLD) {
|
||||
warn(url, 'oversized by', m.contentSize - REJECT_THRESHOLD)
|
||||
}
|
||||
|
||||
return { url, contentWeight, extraWeight, stamp: Date.now() }
|
||||
}
|
||||
|
||||
async function generateMetrics (urls) {
|
||||
console.debug('Checking', urls)
|
||||
debug('Checking', urls)
|
||||
const metricsList = []
|
||||
const keyedPageData = pageData.reduce((acc, page) => {
|
||||
// stores url/stamp pairs to decide for recheck
|
||||
|
@ -28,24 +50,25 @@ async function generateMetrics (urls) {
|
|||
for (const url of urls) {
|
||||
if (knownURLs.indexOf(url) >= 0) {
|
||||
if (now - keyedPageData[url].stamp < RECHECK_THRESHOLD) {
|
||||
console.debug('skipping known URL', url)
|
||||
debug('skipping known URL', url)
|
||||
metricsList.push(keyedPageData[url]) // push old data to list
|
||||
continue
|
||||
}
|
||||
}
|
||||
try {
|
||||
console.debug('fetching and analyzing', url)
|
||||
debug('fetching and analyzing', url)
|
||||
const results = await phantomas(url)
|
||||
metricsList.push(calcWeights(url, results.getMetrics()))
|
||||
const weights = calcWeights(url, results.getMetrics())
|
||||
metricsList.push(weights) // TODO: what to do with oversized pages?
|
||||
} catch(error) {
|
||||
console.error(`failed to analyze ${url}`, error)
|
||||
error(`failed to analyze ${url}`, error)
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
fs.writeFileSync(OUTPUT_FILE, JSON.stringify(metricsList))
|
||||
} catch (err) {
|
||||
console.error(`ERROR: failed to write results to ${OUTPUT_FILE}`, err)
|
||||
error(`failed to write results to ${OUTPUT_FILE}`, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,5 +77,5 @@ try {
|
|||
const urls = rawString.split('\n').filter(line => line.startsWith('http'))
|
||||
generateMetrics(urls)
|
||||
} catch (err) {
|
||||
console.error(`ERROR: failed to read page list from ${INPUT_FILE}`, err)
|
||||
error(`failed to read page list from ${INPUT_FILE}`, err)
|
||||
}
|
||||
|
|
|
@ -4,12 +4,14 @@
|
|||
"scripts": {
|
||||
"build": "rollup -c",
|
||||
"dev": "rollup -c -w",
|
||||
"start": "sirv public"
|
||||
"start": "sirv public",
|
||||
"upload": "scp -r public/* 250kb.club:/srv/http/250kb.club/"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-commonjs": "^14.0.0",
|
||||
"@rollup/plugin-json": "^4.1.0",
|
||||
"@rollup/plugin-node-resolve": "^8.0.0",
|
||||
"chalk": "^4.1.0",
|
||||
"phantomas": "^2.0.0",
|
||||
"rollup": "^2.3.4",
|
||||
"rollup-plugin-livereload": "^2.0.0",
|
||||
|
|
29
yarn.lock
29
yarn.lock
|
@ -141,6 +141,13 @@ ansi-styles@^3.2.1:
|
|||
dependencies:
|
||||
color-convert "^1.9.0"
|
||||
|
||||
ansi-styles@^4.1.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
||||
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
|
||||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
|
||||
ansicolors@~0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979"
|
||||
|
@ -257,6 +264,14 @@ chalk@^2.0.0:
|
|||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
chalk@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
|
||||
integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
|
||||
dependencies:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
chokidar@^3.3.0:
|
||||
version "3.4.3"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b"
|
||||
|
@ -292,11 +307,23 @@ color-convert@^1.9.0:
|
|||
dependencies:
|
||||
color-name "1.1.3"
|
||||
|
||||
color-convert@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
|
||||
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
|
||||
dependencies:
|
||||
color-name "~1.1.4"
|
||||
|
||||
color-name@1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
||||
|
||||
color-name@~1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
commander@^2.20.0:
|
||||
version "2.20.3"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
|
@ -1003,7 +1030,7 @@ supports-color@^5.3.0:
|
|||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
supports-color@^7.0.0:
|
||||
supports-color@^7.0.0, supports-color@^7.1.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
||||
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
||||
|
|
Loading…
Add table
Reference in a new issue