feat(front+back): pwa added, register parkour update with it, and jeux added in coming soon
Some checks failed
Deploy to Development / build-and-deploy (push) Failing after 20s
Some checks failed
Deploy to Development / build-and-deploy (push) Failing after 20s
This commit is contained in:
79
frontend/scripts/generate-icons.js
Normal file
79
frontend/scripts/generate-icons.js
Normal file
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* Script pour générer les icônes PWA à partir du logo
|
||||
*
|
||||
* Usage: node scripts/generate-icons.js
|
||||
*
|
||||
* Nécessite: npm install --save-dev sharp
|
||||
*/
|
||||
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
// Tailles d'icônes requises pour PWA
|
||||
const iconSizes = [72, 96, 128, 144, 152, 192, 384, 512]
|
||||
|
||||
async function generateIcons() {
|
||||
try {
|
||||
// Vérifier si sharp est installé
|
||||
let sharp
|
||||
try {
|
||||
sharp = require('sharp')
|
||||
} catch (e) {
|
||||
console.error('❌ Le package "sharp" n\'est pas installé.')
|
||||
console.log('📦 Installez-le avec: npm install --save-dev sharp')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
const logoPath = path.join(__dirname, '../public/logo_lediscord.png')
|
||||
const publicDir = path.join(__dirname, '../public')
|
||||
|
||||
// Vérifier que le logo existe
|
||||
if (!fs.existsSync(logoPath)) {
|
||||
console.error(`❌ Logo introuvable: ${logoPath}`)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
console.log('🎨 Génération des icônes PWA avec fond transparent...')
|
||||
|
||||
// Générer chaque taille d'icône
|
||||
for (const size of iconSizes) {
|
||||
const outputPath = path.join(publicDir, `icon-${size}x${size}.png`)
|
||||
|
||||
// Calculer le padding (10% de la taille) pour éviter que le logo touche les bords
|
||||
const padding = Math.floor(size * 0.1)
|
||||
const contentSize = size - (padding * 2)
|
||||
|
||||
await sharp(logoPath)
|
||||
.resize(contentSize, contentSize, {
|
||||
fit: 'contain',
|
||||
background: { r: 0, g: 0, b: 0, alpha: 0 } // Fond transparent
|
||||
})
|
||||
.extend({
|
||||
top: padding,
|
||||
bottom: padding,
|
||||
left: padding,
|
||||
right: padding,
|
||||
background: { r: 0, g: 0, b: 0, alpha: 0 } // Fond transparent
|
||||
})
|
||||
.resize(size, size, {
|
||||
kernel: sharp.kernel.lanczos3 // Meilleure qualité de redimensionnement
|
||||
})
|
||||
.png({
|
||||
quality: 100,
|
||||
compressionLevel: 9
|
||||
})
|
||||
.toFile(outputPath)
|
||||
|
||||
console.log(`✅ Généré: icon-${size}x${size}.png`)
|
||||
}
|
||||
|
||||
console.log('✨ Toutes les icônes ont été générées avec succès!')
|
||||
console.log('💡 Les icônes utilisent un fond transparent avec un padding intelligent.')
|
||||
} catch (error) {
|
||||
console.error('❌ Erreur lors de la génération des icônes:', error)
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
generateIcons()
|
||||
|
||||
Reference in New Issue
Block a user