perf(assets): convert images to webp and check asset paths

Convert 26 PNG/JPG assets to WebP: max 1600 px, q80, diagrams lossless.
src/assets shrinks from 8.3 MB to 4.2 MB.
Use me.jpg for og:image and twitter:image; some crawlers skip WebP.
Add scripts/check-assets.mjs to lint, so a wrong asset path fails lint,
not only at runtime.
This commit is contained in:
lobo committed 2026-10-13 09:13:58 +02:00
1 parent 4e59770e53
commit 2abc7c31e2
62 files changed
+74 -33

No files matched your search

+26 -26
View File
@@ -1,44 +1,44 @@
export class AssetsConstants {
static readonly ME = '/assets/me.webp';
static readonly LOGO = '/assets/logos/logo-wolf.png';
static readonly LOGO = '/assets/logos/logo-wolf.webp';
static readonly FLAG_DE = '/assets/flags/de.svg';
static readonly FLAG_EN = '/assets/flags/gb.svg';
//logos
static readonly CHAMAELEON_LOGO = '/assets/logos/logo_chamaeleon.svg';
static readonly TH_BINGEN_LOGO = '/assets/logos/bingen-logo-white.svg';
static readonly ASSYST_LOGO = '/assets/logos/assyst_gmbh_logo.jpg';
static readonly COLORDIGITAL_LOGO = '/assets/logos/dmixcloud_logo.jpg';
static readonly TERAPORT_LOGO = '/assets/logos/teraport_gmbh_logo.jpg';
static readonly ASSYST_LOGO = '/assets/logos/assyst_gmbh_logo.webp';
static readonly COLORDIGITAL_LOGO = '/assets/logos/dmixcloud_logo.webp';
static readonly TERAPORT_LOGO = '/assets/logos/teraport_gmbh_logo.webp';
static readonly DIPLOMA = '/assets/projects/diploma/Dahm2010-Diplomarbeit.pdf';
//project images
static readonly PLAYGROUND_IMAGES = [
'/assets/projects/playground/1.png'
'/assets/projects/playground/1.webp'
];
static readonly EL_MUCHO_IMAGES = [
'/assets/projects/el-mucho/1.jpg',
'/assets/projects/el-mucho/2.jpg',
'/assets/projects/el-mucho/3.jpg',
'/assets/projects/el-mucho/4.jpg'
'/assets/projects/el-mucho/1.webp',
'/assets/projects/el-mucho/2.webp',
'/assets/projects/el-mucho/3.webp',
'/assets/projects/el-mucho/4.webp'
];
static readonly GAME_JAMS_IMAGES = [
'/assets/projects/game-jams/1.png',
'/assets/projects/game-jams/2.png',
'/assets/projects/game-jams/3.png'
'/assets/projects/game-jams/1.webp',
'/assets/projects/game-jams/2.webp',
'/assets/projects/game-jams/3.webp'
];
static readonly DIPLOMA_IMAGES = [
'/assets/projects/diploma/1.jpg',
'/assets/projects/diploma/2.jpg',
'/assets/projects/diploma/3.jpg',
'/assets/projects/diploma/4.jpg',
'/assets/projects/diploma/5.jpg',
'/assets/projects/diploma/6.jpg'
'/assets/projects/diploma/1.webp',
'/assets/projects/diploma/2.webp',
'/assets/projects/diploma/3.webp',
'/assets/projects/diploma/4.webp',
'/assets/projects/diploma/5.webp',
'/assets/projects/diploma/6.webp'
];
static readonly CLAUDE_BOX_IMAGES = [
@@ -46,16 +46,16 @@ export class AssetsConstants {
];
static readonly TRIBBLE_IMAGES = [
'/assets/projects/tribble-the-homeserver/1.png',
'/assets/projects/tribble-the-homeserver/2.png',
'/assets/projects/tribble-the-homeserver/3.png',
'/assets/projects/tribble-the-homeserver/4.png'
'/assets/projects/tribble-the-homeserver/1.webp',
'/assets/projects/tribble-the-homeserver/2.webp',
'/assets/projects/tribble-the-homeserver/3.webp',
'/assets/projects/tribble-the-homeserver/4.webp'
];
static readonly TBP_IMAGES = [
'/assets/projects/to-be-played/1.png',
'/assets/projects/to-be-played/2.png',
'/assets/projects/to-be-played/3.png',
'/assets/projects/to-be-played/4.png'
'/assets/projects/to-be-played/1.webp',
'/assets/projects/to-be-played/2.webp',
'/assets/projects/to-be-played/3.webp',
'/assets/projects/to-be-played/4.webp'
];
}