dasig-solid/frontend/@dasig/scripts/node/optimizeLogo.ts
2025-11-26 14:01:40 +08:00

36 lines
998 B
TypeScript

import { consola } from "consola";
import process from "node:process";
import sharp from "sharp";
import yargs from "yargs";
import { hideBin } from "yargs/helpers";
(async () => {
const size = yargs(hideBin(process.argv)).option("size", {
alias: "s",
describe: "Specify the size of the logo",
type: "number",
demandOption: true,
}).argv.size;
try {
const webpImage = "./@dasig/images/logo.webp";
const avifImage = "./@dasig/images/logo.avif";
const inputSrc = "./src/images/logo.png";
const avifBuffer = await sharp(inputSrc)
.avif({ quality: 60 })
.resize(size)
.toBuffer();
await sharp(avifBuffer).toFile(avifImage);
consola.success("Logo successfully optimized in Avif");
const webpBuffer = await sharp(inputSrc)
.webp({ quality: 75 })
.resize(size)
.toBuffer();
await sharp(webpBuffer).toFile(webpImage);
consola.success("Logo successfully optimized in Webp");
} catch (error) {
consola.error("Error generating favicon:", error);
}
})();