如何在Laravel Mix生产构建中关闭代码压缩?
在Laravel Mix生产构建中关闭代码压缩的最佳方案
你的现有配置存在几个无效点:重复调用mix.options导致配置混乱,且uglifyOptions里的minify、minimize等参数并非UglifyJS/Terser的有效配置项;如果使用Laravel Mix 6及以上版本,默认已用TerserPlugin替代UglifyJsPlugin,原有uglify配置完全不会生效。
以下是针对不同Mix版本的最优解决方案:
适用于Laravel Mix 6+版本
let mix = require('laravel-mix'); mix.js('src/js/app.js', 'assets/js/common.js') .sass('src/scss/style.scss', '') .options({ processCssUrls: false }); if (mix.inProduction()) { // 直接关闭所有压缩逻辑 mix.options({ minimize: false, cssnano: false }); // 若需要保留剔除console功能但不压缩代码,添加如下配置 mix.override((config) => { config.optimization.minimizer.forEach(minimizer => { if (minimizer.constructor.name === 'TerserPlugin') { minimizer.options.terserOptions = { compress: { drop_console: true, // 关闭所有压缩相关选项 collapse_vars: false, reduce_vars: false, booleans: false, loops: false }, // 关闭代码混淆 mangle: false, // 格式化代码为可读格式 format: { beautify: true, comments: false } }; } }); }); }
适用于Laravel Mix 5及以下版本
let mix = require('laravel-mix'); mix.js('src/js/app.js', 'assets/js/common.js') .sass('src/scss/style.scss', '') .options({ processCssUrls: false }); if (mix.inProduction()) { mix.options({ minimize: false, uglify: false, cssnano: false }); }
关键配置说明
minimize: false:核心开关,直接禁用Mix默认的JS/CSS压缩插件cssnano: false:单独关闭CSS压缩,避免版本兼容问题- 保留
drop_console时,通过mix.override()手动修改Terser配置,仅开启控制台剔除,关闭所有压缩、混淆逻辑并美化代码
内容的提问来源于stack exchange,提问作者Cmaxster
相关产品推荐
相关产品推荐

