Laravel集成Bootstrap 4 Beta缺失无断点类问题求助
解决Laravel中Bootstrap 4 Beta通用工具类缺失的问题
我之前在项目里也碰到过一模一样的情况——装了Bootstrap 4 Beta3,结果只有带断点的响应式类能用,基础的d-block、p-1、mx-2这些全没生成。折腾了半天终于找到几个核心排查方向,你可以挨个试试:
检查Sass变量配置
Bootstrap 4 Beta的工具类生成依赖特定的变量开关,你可以打开项目里的resources/sass/_variables.scss(如果没有就从Bootstrap源码里复制一份到本地),确认以下几个变量是否设为true:$enable-grid-classes: true;(控制基础布局类)$enable-responsive-utilities: true;(控制响应式工具类,默认是true,但如果被误改就会出问题)- 另外,内外边距类(p-、m-)依赖
$spacers变量,确认它不是空的:$spacers: ( 0: 0, 1: ($spacer * .25), 2: ($spacer * .5), 3: $spacer, 4: ($spacer * 1.5), 5: ($spacer * 3) );
如果这些变量被误设为
false或者缺失,基础工具类就不会被编译出来。确认Bootstrap的完整引入
打开resources/sass/app.scss,检查是不是完整引入了Bootstrap的所有模块。正确的写法应该是:// 先引入自定义变量 @import "variables"; // 再引入完整的Bootstrap @import "~bootstrap/scss/bootstrap";如果你是拆分引入模块(比如只引了网格和响应式工具),那一定要手动加上工具类的文件:
@import "~bootstrap/scss/utilities/_display"; @import "~bootstrap/scss/utilities/_spacing";注意这些基础工具类要在响应式变体类之前引入,不然只会生成带断点的版本。
重新编译并清理缓存
有时候旧的编译缓存会搞事情,你可以按这个步骤来:- 先删除
public/css/app.css文件,彻底清掉旧的编译结果 - 重新运行编译命令:
npm run dev(开发环境)或者npm run prod(生产环境) - 如果用的是实时编译,试试
npm run watch-poll,确保修改能实时生效
- 先删除
排查Laravel Mix配置
打开webpack.mix.js,确认你的Sass编译配置没有异常,比如有没有加了奇怪的参数导致模块缺失。正常的配置应该是:mix.sass('resources/sass/app.scss', 'public/css');不要在这个配置里添加会过滤Bootstrap模块的选项。
如果以上步骤都试过还是不行,你可以把app.scss的内容和_variables.scss的关键部分贴出来,这样更容易定位问题。
内容的提问来源于stack exchange,提问作者Verdemis
相关产品推荐
相关产品推荐

