-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate-icons.js
More file actions
29 lines (22 loc) · 884 Bytes
/
Copy pathgenerate-icons.js
File metadata and controls
29 lines (22 loc) · 884 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { readFile, writeFile, mkdir } from 'fs/promises';
import path from 'path';
import { fileURLToPath } from 'url';
import sharp from 'sharp';
import png2icons from 'png2icons';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const src = path.join(__dirname, 'build/icon.png');
const outDir = path.join(__dirname, 'build/');
await mkdir(outDir, { recursive: true });
const pngBuffer = await readFile(src);
const icoBuffer = png2icons.createICO(pngBuffer, 0, 0, true);
await writeFile(path.join(outDir, 'icon.ico'), icoBuffer);
const icnsBuffer = png2icons.createICNS(pngBuffer, 0, 0);
await writeFile(path.join(outDir, 'icon.icns'), icnsBuffer);
const pngSizes = [16, 24, 32, 48, 64, 128, 256, 512];
await Promise.all(
pngSizes.map(size =>
sharp(pngBuffer)
.resize(size, size)
.toFile(path.join(outDir, `icon-${size}x${size}.png`))
)
);