Laravel中DevFactoryCH/minify压缩CSS删除var()属性,求替代压缩包
兼容CSS变量的Laravel资源压缩替代方案
根因说明
你当前使用的minify包已停止维护多年,底层依赖的CSS解析器不支持CSS3自定义属性语法,会将无法识别的var()相关规则直接剔除,最终导致对应属性丢失。
可直接替代的兼容方案
低迁移成本扩展包:aminyazdanpanah/laravel-minify
该包基于长期维护的matthiasmullie/minify封装,完全支持现代CSS语法,不会剔除var()相关规则,用法和你当前的调用逻辑几乎一致,改造成本极低。
安装命令:
Blade模板调用示例:composer require aminyazdanpanah/laravel-minify{!! inline_css(Minify::css([ '/css/bootstrap.css', '/css/style.css', '/css/label.css', ])) !!}官方推荐构建工具:Laravel Vite
Laravel 9及以上版本默认内置Vite作为前端构建工具,内置的压缩能力全量支持CSS变量、PostCSS等现代前端特性,长期维护性最好。vite.config.js配置示例:
Blade模板调用示例:import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: [ 'css/bootstrap.css', 'css/style.css', 'css/label.css' ], refresh: true, }), ], });
如需内联CSS,直接通过@vite(['css/bootstrap.css', 'css/style.css', 'css/label.css'])file_get_contents(public_path(Vite::asset('css/xxx.css')))读取构建后的文件内容输出即可。Laravel Mix适配方案
如果你还在使用Laravel Mix作为构建工具,直接配置cssnano作为PostCSS压缩插件即可,默认支持CSS变量规则,不会出现属性丢失问题。webpack.mix.js配置示例:let mix = require('laravel-mix'); mix.postCss('css/style.css', 'public/css', [ require('cssnano')({ preset: ['default', { discardComments: { removeAll: true } }] }) ]);
内容的提问来源于stack exchange,提问作者abhi
相关产品推荐
相关产品推荐

