Vite Plugin : Générateur de favicons
Un plugin Vite qui génère automatiquement des favicons à partir d'une image source en utilisant la puissante bibliothèque de favicons.
Caractéristiques
- ð¯ Générez plusieurs formats de favicons à partir d'une seule image source
- ð§ Options de favicons entièrement configurables
- ð Injection automatique de HTML dans l'image source
index.html
- ð Répertoire de sortie personnalisé et chemin public
- ð Support du serveur de développement avec service en mémoire
- ð Génération optionnelle d'un fichier de balises HTML
- ð¨ Prise en charge des favicons Android, Apple et standard
Installation du logiciel
npm install vite-plugin-favicon-generator --save-dev
# or
yarn add vite-plugin-favicon-generator --dev
# or
pnpm add vite-plugin-favicon-generator --save-dev
Utilisation
Utilisation de base
// vite.config.js
import { defineConfig } from 'vite'
import faviconPlugin from 'vite-plugin-favicon-generator'
export default defineConfig({
plugins: [
faviconPlugin({
source: 'src/assets/favicon.png', // Source favicon image
appName: 'My App',
theme_color: '#1a1065',
background: '#ffffff',
})
]
})
Configuration avancée
// vite.config.js
import { defineConfig } from 'vite'
import faviconPlugin from 'vite-plugin-favicon-generator'
export default defineConfig({
plugins: [
faviconPlugin({
// Source image
source: 'src/assets/favicon.png',
// Output configuration
outputDir: 'icons', // Output directory (relative to dist)
publicPath: '/icons', // Public path for HTML links
htmlOutput: 'src/favicon-tags.html', // Generate HTML tags file
injectHtml: true, // Auto-inject into index.html
// Favicon configuration (same as favicons library)
appName: 'My Awesome App',
appShortName: 'MyApp',
appDescription: 'My awesome application description',
developerName: 'Your Name',
developerURL: 'https://yoursite.com',
lang: 'en-US',
theme_color: '#1a1065',
background: '#ffffff',
// Icon types to generate
icons: {
android: true, // Android homescreen icon
appleIcon: true, // Apple touch icons
appleStartup: false, // Apple startup images
favicons: true, // Regular favicons
windows: false, // Windows 8 tile icons
yandex: false, // Yandex browser icon
},
// Platform-specific options
android: {
offset: 10,
background: '#ffffff'
},
appleIcon: {
offset: 10,
background: '#ffffff'
}
})
]
})
Options de configuration
Options du plugin
Option | Type d'option | Défaut | Description de l'option |
---|---|---|---|
source | string | 'src/favicon.png' | Chemin d'accès à l'image favicon source |
outputDir | string | 'favicons' | Répertoire de sortie pour les favicons générés (relatif à la sortie de la compilation) |
publicPath | string | '/favicons' | Chemin public pour les favicons en HTML |
htmlOutput | string | undefined | Fichier de sortie pour les balises HTML (relatif à la racine du projet) |
injectHtml | boolean | true | Injecter ou non des balises HTML dans index.html |
Options des favicons
Toutes les options de la bibliothèque favicons sont supportées :
Option | Type d'option | Défaut | Description de l'option |
---|---|---|---|
appName | string | null | Nom de votre application |
appShortName | string | appName | Nom court de votre application |
appDescription | string | null | Description de votre application |
developerName | string | null | Votre nom |
developerURL | string | null | Votre site web |
lang | string | 'en-US' | Langue principale pour le nom et le nom court |
background | string | '#fff' | Couleur d'arrière-plan pour les icônes aplaties |
theme_color | string | '#fff' | Couleur du thème que les agents utilisateurs doivent utiliser |
icons | object | Voir ci-dessous | Paramètres des icônes spécifiques à la plate-forme |
Configuration des icônes
icons: {
android: true, // Create Android homescreen icon
appleIcon: true, // Create Apple touch icons
appleStartup: false, // Create Apple startup images
favicons: true, // Create regular favicons
windows: false, // Create Windows 8 tile icons
yandex: false, // Create Yandex browser icon
}
Chaque type d'icône peut également accepter un objet avec les propriétés offset
et background
:
icons: {
android: {
offset: 10,
background: '#ffffff'
},
appleIcon: {
offset: 15,
background: 'transparent'
}
}
Exemples
React + TypeScript
// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import faviconPlugin from 'vite-plugin-favicon-generator'
export default defineConfig({
plugins: [
react(),
faviconPlugin({
source: 'src/assets/logo.png',
appName: 'React App',
appDescription: 'My React application',
theme_color: '#646cff',
background: '#ffffff',
icons: {
android: true,
appleIcon: true,
favicons: true,
}
})
]
})
Vue.js
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import faviconPlugin from 'vite-plugin-favicon-generator'
export default defineConfig({
plugins: [
vue(),
faviconPlugin({
source: 'src/assets/favicon.png',
appName: 'Vue App',
theme_color: '#4fc08d',
background: '#ffffff',
})
]
})
Laravel
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import faviconPlugin from 'vite-plugin-favicon-generator'
export default defineConfig({
plugins: [
laravel(),
faviconPlugin({
source: 'resources/images/favicon.png',
outputDir: 'public/favicons',
publicPath: '/favicons',
htmlOutput: 'resources/views/favicons.blade.php',
injectHtml: false,
icons: {
android: true,
appleIcon: true,
appleStartup: false,
favicons: true,
windows: false,
yandex: false,
},
})
]
})
{{-- layout.blade.php --}}
@if(file_exists(resource_path('views/favicons.blade.php')))
@include('favicons')
@endif
Sortie personnalisée et génération HTML
faviconPlugin({
source: 'assets/icon.png',
outputDir: 'static/icons',
publicPath: '/static/icons',
htmlOutput: 'public/favicon-meta.html',
injectHtml: false, // Don't auto-inject, use the HTML file instead
appName: 'My Custom App',
})
Développement et production
- Développement: Les favicons sont générés en mémoire et servis via un middleware
- Production: Les favicons sont générés en tant que fichiers statiques dans le répertoire de sortie de la compilation
Exigences
- Node.js >= 18
- Vite >= 5.0.0
Contribuer
Veuillez soumettre des bugs ou des demandes de fonctionnalités via les issues de Github.
Les pull requests sont les bienvenues !
Merci d'avance !
Licence
Ce projet est un logiciel open-source sous licence MIT.
Vous êtes libre de l'utiliser, de le modifier et de le distribuer dans vos projets, tant que vous respectez les termes de la licence.