36 lines
998 B
TypeScript
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);
|
|
}
|
|
})();
|