blockpoint / laravel-favicon-generator
Package to generate favicons within your Laravel application.
Fund package maintenance!
:vendor_name
Requires
- php: ^8.1
- illuminate/contracts: ^10.0||^11.0||^12.0
- intervention/image: ^3.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3||^2.0
- phpstan/phpstan-deprecation-rules: ^1.1||^2.0
- phpstan/phpstan-phpunit: ^1.3||^2.0
README
A Laravel package to generate and manage high-quality favicons for your web application. This package provides two main features:
- A generator to create all necessary favicon files from a single source image with optimal quality
- A Blade component to easily include the favicon meta tags in your HTML
Features
- Generates high-quality PNG icons using Imagick when available (with GD fallback)
- Creates favicon.ico, favicon-96x96.png, favicon.svg, apple-touch-icon-180x180.png
- Generates web app manifest icons (192x192 and 512x512)
- Creates site.webmanifest file
- Generates SVG favicon from any source image format
- Maintains aspect ratio while ensuring exact dimensions
Installation
You can install the package via composer:
composer require blockpoint/laravel-favicon-generator
You can publish the config file with:
php artisan vendor:publish --tag="laravel-favicon-generator-config"
Optionally, you can publish the views using:
php artisan vendor:publish --tag="laravel-favicon-generator-views"
Usage
Generating Favicons
To generate favicons from a source image, use the provided Artisan command:
php artisan favicon:generate {path/to/your/source/image.png}
This will generate the following favicon files in your public/favicon directory:
- favicon.ico for general browser support
- favicon-96x96.png for higher-resolution displays
- favicon.svg for scalable, high-quality vector images (if source is SVG)
- apple-touch-icon.png for iOS devices
- web-app-manifest-192x192.png and web-app-manifest-512x512.png for Progressive Web Apps
- site.webmanifest for PWA configuration
Using the Blade Component
To include the favicon meta tags in your HTML, add the following component to your layout file:
<head> <!-- Other head elements --> <x-favicon-meta /> </head>
This will output the necessary meta tags for all generated favicons:
<link rel="icon" type="image/png" href="/favicon/favicon-96x96.png" sizes="96x96" /> <link rel="icon" type="image/svg+xml" href="/favicon/favicon.svg" /> <link rel="shortcut icon" href="/favicon/favicon.ico" /> <link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png" /> <link rel="manifest" href="/favicon/site.webmanifest" /> <meta name="application-name" content="Your App Name" /> <meta name="apple-mobile-web-app-title" content="Your App Name" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="default" />
The component will automatically use the application name from your web manifest file or fall back to your Laravel app name configuration.
Programmatic Usage
You can also generate favicons programmatically:
use Blockpoint\LaravelFaviconGenerator\LaravelFaviconGenerator; $generator = new LaravelFaviconGenerator(); $generatedFiles = $generator->generate('path/to/your/source/image.png');
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.