Rails 5 如何移除twitter-bootstrap-rails gem并手动安装Bootstrap
实现方案
完全可以实现,以下是具体操作步骤:
第一步:卸载原有twitter-bootstrap-rails gem
- 删除Gemfile中
gem 'twitter-bootstrap-rails'对应的配置行,如果有指定版本号或者分组配置也一并删除 - 执行
bundle install命令完成gem卸载 - 清理项目中原有gem的相关引用:
- 删除config/initializers目录下的bootstrap初始化配置文件
- 移除app/assets/stylesheets/application.css、app/assets/javascripts/application.js中原有的
require twitter/bootstrap类引用 - 如果之前用gem生成过布局、脚手架模板,先把这些文件里依赖gem helper的逻辑标记出来,后续替换
第二步:手动集成Bootstrap,可选两种方案
方案1:直接导入静态资源(无需额外包管理器,适配所有Rails版本)
- 下载和你之前使用版本一致的Bootstrap编译后静态资源包
- 资源归类存放:
- 所有css文件存入
app/assets/stylesheets/bootstrap/目录 - 所有js文件存入
app/assets/javascripts/bootstrap/目录 - 字体文件(Bootstrap4及更早版本包含glyphicons字体)存入
app/assets/fonts/目录
- 所有css文件存入
- 在
app/assets/stylesheets/application.css中添加引入(放在自定义样式之前):*= require bootstrap/bootstrap.min - 在
app/assets/javascripts/application.js中引入带Popper依赖的bundle版://= require bootstrap/bootstrap.bundle.min,无需单独引入Popper.js
方案2:通过包管理器引入(适合需要自定义Bootstrap源码、方便后续升级的场景)
- 若项目已接入yarn/npm,执行
yarn add bootstrap@<目标版本号>或npm install bootstrap@<目标版本号>即可完成安装 - 若使用Rails 7+默认的importmap配置,执行
importmap pin bootstrap完成引入 - 按照你所用的前端打包工具(esbuild、rollup、asset pipeline等)的规则,在样式入口文件引入Bootstrap样式、在js入口文件导入Bootstrap组件即可
收尾验证
替换完成后跑一遍项目测试用例,检查所有Bootstrap相关的样式、交互组件(下拉菜单、模态框、提示框等)是否正常运行。如果之前用到了twitter-bootstrap-rails提供的专属helper方法,可以自行把对应helper的实现代码拷贝到项目app/helpers目录下,或者修改原有调用逻辑改为原生Bootstrap实现。
内容的提问来源于stack exchange,提问作者N0ne
相关产品推荐
相关产品推荐

