.NET Core 2.1引入Bootstrap 5导致BuildBundlerMinifier打包异常如何解决?
问题根因
你遇到的文件被自动删除的情况,是因为BuildBundlerMinifier默认依赖的NUglify压缩器版本过低,无法识别Bootstrap 5.x JS中使用的ES6+语法,压缩过程抛出错误后,工具会自动删除生成失败的输出文件。
解决方案
按优先级从高到低尝试以下方法即可解决:
方案1:升级BuildBundlerMinifier到最新稳定版
在NuGet包管理器中找到BuildBundlerMinifier包,升级到最新的稳定版本。新版本已经更新了依赖的NUglify组件,默认支持ES6语法解析,绝大多数情况下升级后即可正常打包。方案2:显式在bundle配置中开启ES6压缩支持
如果升级后仍有问题,可以在你的bundleconfig.json的JS打包配置中添加ES6支持的参数,配置示例如下:
新增的[ { "outputFileName": "wwwroot/css/sitebundle.min.css", "inputFiles": [ "wwwroot/lib/bootstrap/css/bootstrap.css", "wwwroot/css/site.css" ] }, { "outputFileName": "wwwroot/js/sitebundle.min.js", "inputFiles": [ "wwwroot/lib/jquery/dist/jquery.js", "wwwroot/lib/bootstrap/js/bootstrap.js", "wwwroot/js/site.js" ], "minify": { "enabled": true, "renameLocals": true, "es6": true } } ]"es6": true参数会告知压缩器按照ES6语法规则解析代码,避免语法识别错误。方案3:直接使用Bootstrap预压缩文件跳过二次压缩
如果以上方案都不生效,可以将输入文件替换为Bootstrap官方已经压缩好的bootstrap.min.js,同时配置打包工具不对该文件做二次压缩,配置示例如下:
该方案只会将多个JS文件合并为一个,不会对已经压缩完成的Bootstrap文件做二次处理,完全规避压缩语法错误问题。{ "outputFileName": "wwwroot/js/sitebundle.min.js", "inputFiles": [ "wwwroot/lib/jquery/dist/jquery.js", "wwwroot/lib/bootstrap/js/bootstrap.min.js", "wwwroot/js/site.js" ], "minify": { "enabled": true, "exclude": [ "**/bootstrap.min.js" ] } }
内容的提问来源于stack exchange,提问作者Bill Kindig
相关产品推荐
相关产品推荐

