1
0
Fork 0
mirror of https://github.com/mat-1/matdoesdev.git synced 2025-08-02 06:36:04 +00:00

convert pngs in retro directory to gifs

This commit is contained in:
mat 2023-12-08 00:47:42 -06:00
parent a9ab3ef9b0
commit 428dcf4916
4 changed files with 429 additions and 3 deletions

Binary file not shown.

View file

@ -23,6 +23,7 @@
"mdsvex": "^0.11.0",
"prettier": "^3.1.0",
"prettier-plugin-svelte": "^3.1.2",
"sharp": "^0.33.0",
"svelte": "4.2.8",
"svelte-check": "^3.6.2",
"svelte-preprocess": "^5.1.1",

View file

@ -1,8 +1,10 @@
import { sveltekit } from '@sveltejs/kit/vite'
import sharp from 'sharp'
import fs from 'fs'
/** @type {import('vite').UserConfig} */
export default {
plugins: [sveltekit()],
plugins: [sveltekit(), pngToGifForRetro()],
build: {
target: 'es2020',
@ -10,3 +12,66 @@ export default {
base: '',
}
/**
* Convert the PNGs in the retro directory into GIFs, since some very old browsers don't support PNGs.
* @returns {import('vite').Plugin}
*/
function pngToGifForRetro() {
return {
name: 'png-to-gif',
enforce: 'post',
apply: 'build',
closeBundle: async () => {
const baseDirectory = 'build/retro'
const allFiles = await fs.promises.readdir(baseDirectory, {
recursive: true,
})
const files = allFiles
.filter((file) => file.endsWith('.png'))
.map((file) => `${baseDirectory}/${file}`)
const handles = files.map(async (publicFilePath) => {
const newFilePath = publicFilePath.replace(/\.png$/, '.gif')
console.log(publicFilePath, ' -> ', newFilePath)
// if it already exists, skip
if (
await fs.promises
.access(newFilePath, fs.constants.F_OK)
.then(() => true)
.catch(() => false)
) {
console.log(newFilePath, 'already exists, skipping')
return
}
const pngBuffer = await fs.promises.readFile(publicFilePath)
const gifBuffer = await sharp(pngBuffer).toFormat('gif').toBuffer()
await fs.promises.writeFile(newFilePath, gifBuffer)
console.log('wrote', newFilePath)
// // convert the path to the output folder
// const filePath: string = publicFilePath.replace(publicDir + sep, '');
// const fullFilePath: string = join(outputPath, filePath);
// if (fs.existsSync(fullFilePath) === false) return;
// const { mtimeMs } = await fsp.stat(fullFilePath);
// if (mtimeMs <= (mtimeCache.get(filePath) || 0)) return;
// const buffer: Buffer = await fsp.readFile(fullFilePath);
// const { content, skipWrite } = await processFile(filePath, buffer);
// // write the file only if its optimized size < original size
// if (content?.length > 0 && !skipWrite) {
// await fsp.writeFile(fullFilePath, content);
// mtimeCache.set(filePath, Date.now());
// }
})
await Promise.all(handles)
},
}
}

364
yarn.lock
View file

@ -22,6 +22,15 @@ __metadata:
languageName: node
linkType: hard
"@emnapi/runtime@npm:^0.44.0":
version: 0.44.0
resolution: "@emnapi/runtime@npm:0.44.0"
dependencies:
tslib: "npm:^2.4.0"
checksum: 68133f288a5f413787610232c90194ab0b692b859a130866f4869483217d94f71ac3fd23aacfb428e0eb438e4882d0e04874690a1f06386b7b35ebae330e698a
languageName: node
linkType: hard
"@esbuild/android-arm64@npm:0.19.7":
version: 0.19.7
resolution: "@esbuild/android-arm64@npm:0.19.7"
@ -250,6 +259,181 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-darwin-arm64@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-darwin-arm64@npm:0.33.0"
dependencies:
"@img/sharp-libvips-darwin-arm64": "npm:1.0.0"
dependenciesMeta:
"@img/sharp-libvips-darwin-arm64":
optional: true
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@img/sharp-darwin-x64@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-darwin-x64@npm:0.33.0"
dependencies:
"@img/sharp-libvips-darwin-x64": "npm:1.0.0"
dependenciesMeta:
"@img/sharp-libvips-darwin-x64":
optional: true
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@img/sharp-libvips-darwin-arm64@npm:1.0.0":
version: 1.0.0
resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.0"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@img/sharp-libvips-darwin-x64@npm:1.0.0":
version: 1.0.0
resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.0"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@img/sharp-libvips-linux-arm64@npm:1.0.0":
version: 1.0.0
resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.0"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linux-arm@npm:1.0.0":
version: 1.0.0
resolution: "@img/sharp-libvips-linux-arm@npm:1.0.0"
conditions: os=linux & cpu=arm & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linux-s390x@npm:1.0.0":
version: 1.0.0
resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.0"
conditions: os=linux & cpu=s390x & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linux-x64@npm:1.0.0":
version: 1.0.0
resolution: "@img/sharp-libvips-linux-x64@npm:1.0.0"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.0":
version: 1.0.0
resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.0"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@img/sharp-libvips-linuxmusl-x64@npm:1.0.0":
version: 1.0.0
resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.0"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@img/sharp-linux-arm64@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-linux-arm64@npm:0.33.0"
dependencies:
"@img/sharp-libvips-linux-arm64": "npm:1.0.0"
dependenciesMeta:
"@img/sharp-libvips-linux-arm64":
optional: true
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linux-arm@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-linux-arm@npm:0.33.0"
dependencies:
"@img/sharp-libvips-linux-arm": "npm:1.0.0"
dependenciesMeta:
"@img/sharp-libvips-linux-arm":
optional: true
conditions: os=linux & cpu=arm & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linux-s390x@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-linux-s390x@npm:0.33.0"
dependencies:
"@img/sharp-libvips-linux-s390x": "npm:1.0.0"
dependenciesMeta:
"@img/sharp-libvips-linux-s390x":
optional: true
conditions: os=linux & cpu=s390x & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linux-x64@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-linux-x64@npm:0.33.0"
dependencies:
"@img/sharp-libvips-linux-x64": "npm:1.0.0"
dependenciesMeta:
"@img/sharp-libvips-linux-x64":
optional: true
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linuxmusl-arm64@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.0"
dependencies:
"@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.0"
dependenciesMeta:
"@img/sharp-libvips-linuxmusl-arm64":
optional: true
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@img/sharp-linuxmusl-x64@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-linuxmusl-x64@npm:0.33.0"
dependencies:
"@img/sharp-libvips-linuxmusl-x64": "npm:1.0.0"
dependenciesMeta:
"@img/sharp-libvips-linuxmusl-x64":
optional: true
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@img/sharp-wasm32@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-wasm32@npm:0.33.0"
dependencies:
"@emnapi/runtime": "npm:^0.44.0"
conditions: cpu=wasm32
languageName: node
linkType: hard
"@img/sharp-win32-ia32@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-win32-ia32@npm:0.33.0"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@img/sharp-win32-x64@npm:0.33.0":
version: 0.33.0
resolution: "@img/sharp-win32-x64@npm:0.33.0"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@isaacs/cliui@npm:^8.0.2":
version: 8.0.2
resolution: "@isaacs/cliui@npm:8.0.2"
@ -453,6 +637,22 @@ __metadata:
languageName: node
linkType: hard
"@rollup/pluginutils@npm:^5.0.5":
version: 5.1.0
resolution: "@rollup/pluginutils@npm:5.1.0"
dependencies:
"@types/estree": "npm:^1.0.0"
estree-walker: "npm:^2.0.2"
picomatch: "npm:^2.3.1"
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
peerDependenciesMeta:
rollup:
optional: true
checksum: c7bed15711f942d6fdd3470fef4105b73991f99a478605e13d41888963330a6f9e32be37e6ddb13f012bc7673ff5e54f06f59fd47109436c1c513986a8a7612d
languageName: node
linkType: hard
"@rollup/rollup-android-arm-eabi@npm:4.5.2":
version: 4.5.2
resolution: "@rollup/rollup-android-arm-eabi@npm:4.5.2"
@ -918,6 +1118,13 @@ __metadata:
languageName: node
linkType: hard
"ansi-colors@npm:^4.1.3":
version: 4.1.3
resolution: "ansi-colors@npm:4.1.3"
checksum: ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9
languageName: node
linkType: hard
"ansi-regex@npm:^5.0.1":
version: 5.0.1
resolution: "ansi-regex@npm:5.0.1"
@ -1171,13 +1378,33 @@ __metadata:
languageName: node
linkType: hard
"color-name@npm:~1.1.4":
"color-name@npm:^1.0.0, color-name@npm:~1.1.4":
version: 1.1.4
resolution: "color-name@npm:1.1.4"
checksum: a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
languageName: node
linkType: hard
"color-string@npm:^1.9.0":
version: 1.9.1
resolution: "color-string@npm:1.9.1"
dependencies:
color-name: "npm:^1.0.0"
simple-swizzle: "npm:^0.2.2"
checksum: b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404
languageName: node
linkType: hard
"color@npm:^4.2.3":
version: 4.2.3
resolution: "color@npm:4.2.3"
dependencies:
color-convert: "npm:^2.0.1"
color-string: "npm:^1.9.0"
checksum: 7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118
languageName: node
linkType: hard
"commander@npm:^2.19.0":
version: 2.20.3
resolution: "commander@npm:2.20.3"
@ -1274,6 +1501,13 @@ __metadata:
languageName: node
linkType: hard
"detect-libc@npm:^2.0.2":
version: 2.0.2
resolution: "detect-libc@npm:2.0.2"
checksum: a9f4ffcd2701525c589617d98afe5a5d0676c8ea82bcc4ed6f3747241b79f781d36437c59a5e855254c864d36a3e9f8276568b6b531c28d6e53b093a15703f11
languageName: node
linkType: hard
"devalue@npm:^4.3.1":
version: 4.3.2
resolution: "devalue@npm:4.3.2"
@ -1950,6 +2184,15 @@ __metadata:
languageName: node
linkType: hard
"imagetools-core@npm:^6.0.3":
version: 6.0.3
resolution: "imagetools-core@npm:6.0.3"
dependencies:
sharp: "npm:^0.33.0"
checksum: 9fb66b018e7bbb6ead5e37f6504f29a29471000999c4588e8298baf006d2139419098933c475224253785593f6567a086c49abe4088b89d90c3fe58f8da376bf
languageName: node
linkType: hard
"import-fresh@npm:^3.2.1":
version: 3.3.0
resolution: "import-fresh@npm:3.3.0"
@ -1998,6 +2241,13 @@ __metadata:
languageName: node
linkType: hard
"is-arrayish@npm:^0.3.1":
version: 0.3.2
resolution: "is-arrayish@npm:0.3.2"
checksum: f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54
languageName: node
linkType: hard
"is-binary-path@npm:~2.1.0":
version: 2.1.0
resolution: "is-binary-path@npm:2.1.0"
@ -2340,12 +2590,15 @@ __metadata:
postinstall-postinstall: "npm:^2.1.0"
prettier: "npm:^3.1.0"
prettier-plugin-svelte: "npm:^3.1.2"
sharp: "npm:^0.33.0"
svelte: "npm:4.2.8"
svelte-check: "npm:^3.6.2"
svelte-preprocess: "npm:^5.1.1"
tslib: "npm:^2.6.2"
typescript: "npm:^5.3.3"
vite: "npm:5.0.6"
vite-imagetools: "npm:^6.2.7"
vite-plugin-image-optimizer: "npm:^1.1.7"
languageName: unknown
linkType: soft
@ -2778,6 +3031,13 @@ __metadata:
languageName: node
linkType: hard
"pathe@npm:^1.1.1":
version: 1.1.1
resolution: "pathe@npm:1.1.1"
checksum: 3ae5a0529c3415d91c3ac9133f52cffea54a0dd46892fe059f4b80faf36fd207957d4594bdc87043b65d0761b1e5728f81f46bafff3b5302da4e2e48889b8c0e
languageName: node
linkType: hard
"periscopic@npm:^3.1.0":
version: 3.1.0
resolution: "periscopic@npm:3.1.0"
@ -3096,6 +3356,75 @@ __metadata:
languageName: node
linkType: hard
"sharp@npm:^0.33.0":
version: 0.33.0
resolution: "sharp@npm:0.33.0"
dependencies:
"@img/sharp-darwin-arm64": "npm:0.33.0"
"@img/sharp-darwin-x64": "npm:0.33.0"
"@img/sharp-libvips-darwin-arm64": "npm:1.0.0"
"@img/sharp-libvips-darwin-x64": "npm:1.0.0"
"@img/sharp-libvips-linux-arm": "npm:1.0.0"
"@img/sharp-libvips-linux-arm64": "npm:1.0.0"
"@img/sharp-libvips-linux-s390x": "npm:1.0.0"
"@img/sharp-libvips-linux-x64": "npm:1.0.0"
"@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.0"
"@img/sharp-libvips-linuxmusl-x64": "npm:1.0.0"
"@img/sharp-linux-arm": "npm:0.33.0"
"@img/sharp-linux-arm64": "npm:0.33.0"
"@img/sharp-linux-s390x": "npm:0.33.0"
"@img/sharp-linux-x64": "npm:0.33.0"
"@img/sharp-linuxmusl-arm64": "npm:0.33.0"
"@img/sharp-linuxmusl-x64": "npm:0.33.0"
"@img/sharp-wasm32": "npm:0.33.0"
"@img/sharp-win32-ia32": "npm:0.33.0"
"@img/sharp-win32-x64": "npm:0.33.0"
color: "npm:^4.2.3"
detect-libc: "npm:^2.0.2"
semver: "npm:^7.5.4"
dependenciesMeta:
"@img/sharp-darwin-arm64":
optional: true
"@img/sharp-darwin-x64":
optional: true
"@img/sharp-libvips-darwin-arm64":
optional: true
"@img/sharp-libvips-darwin-x64":
optional: true
"@img/sharp-libvips-linux-arm":
optional: true
"@img/sharp-libvips-linux-arm64":
optional: true
"@img/sharp-libvips-linux-s390x":
optional: true
"@img/sharp-libvips-linux-x64":
optional: true
"@img/sharp-libvips-linuxmusl-arm64":
optional: true
"@img/sharp-libvips-linuxmusl-x64":
optional: true
"@img/sharp-linux-arm":
optional: true
"@img/sharp-linux-arm64":
optional: true
"@img/sharp-linux-s390x":
optional: true
"@img/sharp-linux-x64":
optional: true
"@img/sharp-linuxmusl-arm64":
optional: true
"@img/sharp-linuxmusl-x64":
optional: true
"@img/sharp-wasm32":
optional: true
"@img/sharp-win32-ia32":
optional: true
"@img/sharp-win32-x64":
optional: true
checksum: 9a8ac405f1a2f1eaac59b78e1118af1fe4fd55df473f58e5fba8bce6c177396b57069267d3af38d79ce36db78701a476a841fac347c798562ae4776f7ffe49de
languageName: node
linkType: hard
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
@ -3119,6 +3448,15 @@ __metadata:
languageName: node
linkType: hard
"simple-swizzle@npm:^0.2.2":
version: 0.2.2
resolution: "simple-swizzle@npm:0.2.2"
dependencies:
is-arrayish: "npm:^0.3.1"
checksum: df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308
languageName: node
linkType: hard
"sirv@npm:^2.0.2":
version: 2.0.3
resolution: "sirv@npm:2.0.3"
@ -3442,7 +3780,7 @@ __metadata:
languageName: node
linkType: hard
"tslib@npm:^2.6.2":
"tslib@npm:^2.4.0, tslib@npm:^2.6.2":
version: 2.6.2
resolution: "tslib@npm:2.6.2"
checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb
@ -3590,6 +3928,28 @@ __metadata:
languageName: node
linkType: hard
"vite-imagetools@npm:^6.2.7":
version: 6.2.7
resolution: "vite-imagetools@npm:6.2.7"
dependencies:
"@rollup/pluginutils": "npm:^5.0.5"
imagetools-core: "npm:^6.0.3"
checksum: f92121ea10c221d349a2dc4a255c21ae74d084ae17d8ea9c8b1f1440406574a535c976ceb57ff704534db735ea2baa29e6c08cd11a49839a209fe2574ff809b2
languageName: node
linkType: hard
"vite-plugin-image-optimizer@npm:^1.1.7":
version: 1.1.7
resolution: "vite-plugin-image-optimizer@npm:1.1.7"
dependencies:
ansi-colors: "npm:^4.1.3"
pathe: "npm:^1.1.1"
peerDependencies:
vite: ">=3"
checksum: 2dd00beac75fad91c9e7dd862cb93c5666311db0d5b4caf23f1d8583010e502d1bd30123404b01d050fd58a42ed76234fd44f6716c3460b196b2557619af332c
languageName: node
linkType: hard
"vite@npm:5.0.6":
version: 5.0.6
resolution: "vite@npm:5.0.6"