๐Ÿ“ฆ langgenius / dify

๐Ÿ“„ generate-icons.js ยท 56 lines
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56import path from 'node:path'
import { fileURLToPath } from 'node:url'
import sharp from 'sharp'

const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)

const sizes = [
  { size: 192, name: 'icon-192x192.png' },
  { size: 256, name: 'icon-256x256.png' },
  { size: 384, name: 'icon-384x384.png' },
  { size: 512, name: 'icon-512x512.png' },
  { size: 96, name: 'icon-96x96.png' },
  { size: 72, name: 'icon-72x72.png' },
  { size: 128, name: 'icon-128x128.png' },
  { size: 144, name: 'icon-144x144.png' },
  { size: 152, name: 'icon-152x152.png' },
]

const inputPath = path.join(__dirname, '../public/icon.svg')
const outputDir = path.join(__dirname, '../public')

// Generate icons
async function generateIcons() {
  try {
    console.log('Generating PWA icons...')

    for (const { size, name } of sizes) {
      const outputPath = path.join(outputDir, name)

      await sharp(inputPath)
        .resize(size, size)
        .png()
        .toFile(outputPath)

      console.log(`โœ“ Generated ${name} (${size}x${size})`)
    }

    // Generate apple-touch-icon
    await sharp(inputPath)
      .resize(180, 180)
      .png()
      .toFile(path.join(outputDir, 'apple-touch-icon.png'))

    console.log('โœ“ Generated apple-touch-icon.png (180x180)')

    console.log('\nโœ… All icons generated successfully!')
  }
  catch (error) {
    console.error('Error generating icons:', error)
    process.exit(1)
  }
}

generateIcons()