zamcoder / laravel9-html-minifier
Html Minifier 是一个简单的包,用于在将输出 HTML、CSS 样式和 JavaScript 渲染到浏览器之前对其进行压缩,适用于您的 Laravel 应用程序。
Requires
- php: ^7.2.5 || ^8.0
- illuminate/http: ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
- illuminate/view: ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
This package is auto-updated.
Last update: 2024-09-19 04:09:40 UTC
README
Laravel 9 Html Minifier
此包最初属于 https://github.com/dz-id/laravel-html-minifier,因为他尚未更新 Laravel 9,所以我尝试更新它,如果有什么错误,请见谅。
这是一个简单的包,用于在将 HTML、CSS 样式和 JavaScript 渲染到 Laravel 9 应用程序的浏览器之前对其进行压缩。
此工具仅在输出是有效的 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 zamcoder/laravel9-html-minifier
发布配置文件
php artisan vendor:publish --provider="zamcoder\Laravel9HtmlMinifier\HtmlMinifierServiceProvider"
别忘了将其注册到全局中间件
\zamcoder\Laravel9HtmlMinifier\Middleware\MinifyHtml::class 和其他中间件(如果需要)必须注册到 kernel 中,例如
// file : app/Http/Karnel.php protected $middleware = [ .... \zamcoder\Laravel9HtmlMinifier\Middleware\MinifyHtml::class, // middleware untuk minify html \zamcoder\Laravel9HtmlMinifier\Middleware\MinifyCss::class, // middleware untuk minify css style \zamcoder\Laravel9HtmlMinifier\Middleware\MinifyJavascript::class, // middleware untuk minify kode javascript ];
中间件信息
\zamcoder\Laravel9HtmlMinifier\Middleware\MinifyHtml::class
MinifyHtml::class
的作用是压缩 HTML,删除空白空格和换行符,使它们变为一行。
示例输出
- 压缩前
<html lang="id"> <head> <title>Laravel 9 Html Minifier</title> </head> <body> <h1>Laravel 9 Html Minifier</h1> </body> </html>
- 压缩后
<html lang="id"><head><title>Laravel 9 Html Minifier</title></head><body><h1>Laravel 9 Html Minifier</h1></body></html>
\zamcoder\Laravel9HtmlMinifier\Middleware\MinifyCss::class
MinifyCss::class
的作用是压缩 CSS 样式,删除空白空格和换行符,使它们变为一行。
示例输出
- 压缩前
body { background-color: salmon; width: 100%; height: 100%; }
- 压缩后
body{background-color:salmon;width:100%;height:100%}
\zamcoder\Laravel9HtmlMinifier\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 代码:[配置文件](https://github.com/zamcoder/laravel9-html-minifier/blob/HEAD/config/laravel-html-minifier.php)
配置文件
安装包后,您可能需要配置一些选项。请进入文件 [config/laravel-html-minifier.php](https://github.com/zamcoder/laravel9-html-minifier/blob/HEAD/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
时出现错误,请将此字段设置为 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
。
请始终在JavaScript代码中使用逗号,如果此字段设置为false
。
此功能仅在使用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代码(Obfuscate)
注意:如果激活此功能,您的JavaScript代码可能会变得很长。此功能会将每个字符串/文本转换为PHP的chr()
函数,并通过JavaScript的String.fromCharCode()
函数解码。
此功能仅在您使用Middleware MinifyJavascript::class
且此字段设置为false
时有效,此时JavaScript仅被minify,而不是被混淆/Obfuscate。
示例输出
- 在混淆之前
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
即可跳过minify过程。
示例
<style ignore--minify> /* css kode */ </style> <script ignore--minify> /* javascript kode */ </script>
具有属性ignore--minify
的每个style/script标签都会被跳过,不会进行minify。
通过向视图中添加数据“ignore_minify”来跳过视图
您还可以通过在视图中添加数据"ignore_minify"
来跳过minify。
示例
// View ini tidak diminify akan di skip. return view("welcome", ["ignore_minify" => true]);
许可证
MIT (MIT)