dz-id / laravel-html-minifier
Html Minifier是一个简单的包,用于在将输出渲染到浏览器之前对Laravel应用程序的Html、CSS样式和JavaScript进行压缩。
Requires
- php: ^7.2.5 || ^8.0
- illuminate/http: ^6.0 || ^7.0 || ^8.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0
- illuminate/view: ^6.0 || ^7.0 || ^8.0
This package is auto-updated.
Last update: 2024-09-11 02:01:29 UTC
README
Laravel Html Minifier
这是一个简单的包,用于在将HTML、CSS样式和JavaScript压缩后渲染到Laravel应用程序的浏览器之前。
此工具仅在提供的输出是有效的HTML结构时才会工作,包括HTML、head和body标签。例如:
- 有效的HTML(将被处理和压缩)
<html> <head> <!-- head --> </head> <body> <!-- body --> </body> </html>
- 无效的HTML(不会被压缩)
< html> <head> <!-- head --> </head> <body> <!-- body --> </body> </ html> atau <html> <head> <!-- head --> </head> </html>
示例结果
安装
需要
第一步,您可以使用Composer 2x安装此包
composer require dz-id/laravel-html-minifier
发布配置文件
php artisan vendor:publish --provider="DzId\LaravelHtmlMinifier\HtmlMinifierServiceProvider"
请务必将其注册到全局中间件中
\DzId\LaravelHtmlMinifier\Middleware\MinifyHtml::class和 Middleware其他必需的中间件需要注册到kernel中,例如
// file : app/Http/Karnel.php protected $middleware = [ .... \DzId\LaravelHtmlMinifier\Middleware\MinifyHtml::class, // middleware untuk minify html \DzId\LaravelHtmlMinifier\Middleware\MinifyCss::class, // middleware untuk minify css style \DzId\LaravelHtmlMinifier\Middleware\MinifyJavascript::class, // middleware untuk minify kode javascript ];
中间件信息
\DzId\LaravelHtmlMinifier\Middleware\MinifyHtml::class
MinifyHtml::class的作用是压缩HTML,删除空白空间和换行符。
示例结果
- 压缩前
<html lang="id"> <head> <title>Laravel Html Minifier</title> </head> <body> <h1>Laravel Html Minifier</h1> </body> </html>
- 压缩后
<html lang="id"><head><title>Laravel Html Minifier</title></head><body><h1>Laravel Html Minifier</h1></body></html>
\DzId\LaravelHtmlMinifier\Middleware\MinifyCss::class
MinifyCss::class的作用是压缩CSS样式,删除空白空间和换行符。
示例结果
- 压缩前
body { background-color: salmon; width: 100%; height: 100%; }
- 压缩后
body{background-color:salmon;width:100%;height:100%}
\DzId\LaravelHtmlMinifier\Middleware\MinifyJavascript::class
MinifyJavascript::class的作用是压缩JavaScript代码,删除空白空间和换行符。
注意:请勿使用没有括号的代码(如if、elseif、else、while、for等),这会导致代码错误,例如
- 建议的代码
for (let i = 0; i < 10; i++) { console.log('hello dunia'); }
- 不推荐的代码,没有括号的代码在使用
MinifyJavascript::class时通常会导致错误
for (let i = 0; i < 10; i++) // tanpa console.log('hello dunia'); // kurung kurawal
- 压缩后
for (let i = 0; i < 10; i++){console.log('hello dunia')}
您还可以通过将"obfuscate_javascript"部分设置为true来混淆JavaScript代码:config/laravel-html-minifier.php
配置文件
安装包后,您可能需要配置一些选项。请访问文件config/laravel-html-minifier.php以更改配置
禁用服务
您只需将其设置为false即可禁用服务。
// file: config/laravel-html-minifier.php // setel bagian ini ke false untuk menonaktifkan layanan minify Laravel. "enable" => env("LARAVEL_HTML_MINIFIER_ENABLE", true),
自动在CSS代码末尾添加分号或逗号
如果您的CSS代码在使用MinifyCss::class时出现bug,请将此字段设置为false。
// file: config/laravel-html-minifier.php "css_automatic_insert_semicolon" => env("LARAVEL_HTML_MINIFIER_CSS_AUTOMATIC_INSERT_SEMICOLON", true),
自动在JavaScript代码末尾添加分号或逗号
注意:请勿在while、do while、for、if、elseif、else、return等处使用空格或没有括号的代码。例如
- 建议的代码
var log = function(log) { return console.log(log); } let i = 0; do { if (i == 5) { break; } i++; log("hello dunia"); } while (true);
- 不推荐的代码,如果启用“js_automatic_insert_semicolon”字段,则可能会导致错误,因为此处存在某些条件错误
var log = function(log) { return // jeda console.log(log); // baris } let i = 0; do // jeda baris { if (i == 5) // tanpa break; // kurung kurawal i++; log("hello dunia"); } // jeda baris while (true);
如果启用此字段,则代码可能会出现bug,因此请将其设置为false
如果此字段设置为false,则请务必在JavaScript代码中使用分号
此功能仅在使用 MinifyJavascript::class 时有效
// file: config/laravel-html-minifier.php "js_automatic_insert_semicolon" => env("LARAVEL_HTML_MINIFIER_JS_AUTOMATIC_INSERT_SEMICOLON", true),
删除 HTML 注释
只需将其设置为 true 以启用,设置为 false 以禁用。
此功能仅在使用 Middleware MinifyHtml::class 时有效
// file: config/laravel-html-minifier.php // setel bidang ini ke false untuk mematikan "remove_comments" => env("LARAVEL_HTML_MINIFIER_REMOVE_COMMENTS", true),
混淆 JavaScript 代码
注意:如果启用此功能,您的 JavaScript 代码可能会变长。此功能将每个字符串/文本逐个转换为 PHP 的 chr() 函数,并通过 JavaScript 的 String.fromCharCode() 函数进行解码。
此功能仅在您使用 Middleware MinifyJavascript::class 且此字段设置为 false 时有效。如果设置为 false,则 JavaScript 只会被压缩而不会被混淆/混淆
示例结果
- 混淆前
alert(1);
- 混淆后
eval(((_,__,___,____,_____,______,_______)=>{______[___](x=>_______[__](String[____](x)));return _______[_](_____)})('join','push','forEach','fromCharCode','',[97,108,101,114,116,40,49,41,59],[]))
在这种情况下,您只需将其设置为 false 以禁用,设置为 true 以启用。
// file : config/laravel-html-minifier.php // setel ke true untuk mengaktifkan "obfuscate_javascript" => env("LARAVEL_HTML_MINIFIER_OBFUSCATE_JS", false),
忽略/跳过路由
您可能需要配置包以跳过一些路由。
// file : config/laravel-html-minifier.php "ignore" => [ "*/download/*", // Abaikan semua route yang mengandung download "admin/*", // Abaikan semua route dengan awalan admin, "*/user" // Abaikan route dengan akhiran user ]
通过添加属性 ignore--minify 跳过
您只需在 script/style 标签中添加属性 ignore--minify 以跳过压缩过程。
示例
<style ignore--minify> /* css kode */ </style> <script ignore--minify> /* javascript kode */ </script>
具有属性 ignore--minify 的每个 style/script 标签都将被跳过,不会进行压缩。
通过在视图中添加数据 "ignore_minify" 跳过视图
您还可以通过在视图中添加数据 "ignore_minify" 跳过压缩。
示例
// View ini tidak diminify akan di skip. return view("welcome", ["ignore_minify" => true]);
许可证
MIT (MIT)

