kenangundogan/htmlmin

HTMLMin Is A Simple HTML Minifier For Laravel

v1.0.0 2024-12-16 13:39 UTC

This package is auto-updated.

Last update: 2024-12-17 13:40:12 UTC


README

Laravel HTMLMin, developed by Kenan Gündoğan, is a simple HTML minifier package for Laravel. This package uses Mr Clay's Minify library to minify entire HTTP responses. It can also minify Blade views at compile time.

Software License

Installation

Laravel HTMLMin requires PHP 7.3+ and is compatible with Laravel 7.x, 8.x, 9.x, 10.x, and 11.x. You can install the package using Composer:

composer require kenangundogan/htmlmin

Automatic Loading

The package is automatically loaded using Laravel's extra configuration. There is no need to manually register the Service Provider.

Configuration

Laravel HTMLMin configuration is optional. You can publish the configuration file using the following command:

php artisan vendor:publish

This will create a config/htmlmin.php file, which you can modify to suit your project's needs.

Configuration Options

  1. Automatic Blade Optimizations (blade)
    Enables automatic minification of Blade views during compilation.
    Default: false

  2. Force Blade Optimizations (force)
    Forces minification even on risky Blade views. Use with caution.
    Default: false

  3. Ignore Blade Files (ignore)
    Specify file paths to exclude from minification.
    Example:

    'ignore' => [
        'resources/views/emails',
        'resources/views/markdown',
    ],

Usage

HTMLMin Class

The HTMLMin class is bound to the IOC container as htmlmin and provides the following methods:

  • blade($value): Quickly minifies a Blade string.
  • css($value): Minifies CSS content.
  • js($value): Minifies JavaScript content.
  • html($value): Minifies HTML content, including inline CSS and JS.

Example Usage:

use HTMLMin\HTMLMin\Facades\HTMLMin;

echo HTMLMin::html('<div>   <p> Hello World! </p>   </div>');

Middleware Usage

You can use middleware to minify HTML responses live. Add the middleware to your routes:

use HTMLMin\HTMLMin\Http\Middleware\MinifyMiddleware;

Route::middleware([MinifyMiddleware::class])->group(function () {
    Route::get('/', function () {
        return view('welcome');
    });
});

Note: Middleware runs on every request and may have a performance cost. For better performance, consider using Blade minification.

Skipping Minification

If you want to exclude certain files or views from minification:

  • Using Config:
    Add file paths to the ignore setting in config/htmlmin.php.
  • Using HTML Comments:
    Add the following comment within the file:
    <!-- skip.minification -->

Clearing Cache

To apply changes, you may need to clear Laravel's view cache:

php artisan view:clear

License

Laravel HTMLMin is licensed under the MIT License.