结论:npm install bootstrap 仅提供编译后产物,不含 SCSS 源码、构建脚本和可编辑模块,无法定制变量或删减组件;真正定制开发必须 git clone 官方仓库、确保 Node.js ≥18、npm install 后执行 npm run css 或 npm run dist。

直接说结论:别一上来就 npm install bootstrap —— 它只装编译好的 CSS/JS,不带 SCSS 源码、不带构建脚本,改不了变量,也删不掉组件。
npm install bootstrap 为什么不能用于定制开发
很多人执行 npm install bootstrap 后,发现 node_modules/bootstrap/scss 目录不存在,或者 package.json 里没有 scripts 字段,运行 npm run css 报错“missing script”。这是因为官方发布的 npm 包是「产物包」,不是「源码工作流包」。
- 它只含
dist/css/bootstrap.css、dist/js/bootstrap.bundle.js等成品文件 - 不包含
scss/_variables.scss、js/src/modal.js等可编辑源文件 - 没有
functions.scss、mixins.scss等基础模块,@import "bootstrap/scss/bootstrap"会直接报错 - 想换
$primary颜色?删掉carousel组件?调试 Sass 编译流程?这条路走不通
要定制,必须用 Git 克隆 + Node.js 构建环境
真正能改源码、跑编译、做主题定制的路径,只有克隆官方仓库并本地构建。这是唯一能拿到完整开发链路的方式。
- 执行
git clone https://github.com/twbs/bootstrap.git - 确保 Node.js ≥ 18(低于版本会因
engines.node不匹配而npm install失败) - 进目录后运行
npm install,再运行npm run css(仅编译 CSS,快)或npm run dist(全量构建) -
npm run css输出在dist/css/,npm run dist还会生成 JS、docs、bundle 等全套产物 - 注意:
package.json的构建脚本在根目录,不是在node_modules/bootstrap里——后者压根没scripts
@import bootstrap/scss/bootstrap 的三个致命细节
即使你已克隆仓库、有 SCSS 源码,@import 仍极易失败。常见错误不是语法写错,而是环境或顺序问题。
- 入口必须是
@import "bootstrap/scss/bootstrap.scss"(带.scss后缀),写成@import "bootstrap/scss/bootstrap"或@import "bootstrap"都找不到文件 - 自定义变量(如
$primary: #0d6efd)必须放在所有@import之前,否则被默认值覆盖,改了等于没改 - 构建工具需配置
includePaths或--load-path:Webpack 用户要在sass-loader中加includePaths: ["node_modules"];命令行用sassCLI 则必须加--load-path=node_modules - Bootstrap 5.3+ 启用了
package.json#exports,导致旧式@import "~bootstrap/scss/bootstrap"可能失效,优先走includePaths
CDN / 离线引入适合什么场景
如果你只是做个静态页面、快速原型,或内网项目不允许联网,CDN 或离线引入反而更稳。
- CDN 要加
integrity属性防劫持,例如:<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> - 离线引入时,必须手动下载
@popperjs/core(至少 v2.11.8),否则Dropdown、Tooltip、Popover会静默失效——控制台无报错,点击无反应,排查起来极难定位 - jQuery 不是必需项(Bootstrap 5 已移除对它的依赖),但若你项目中已有 jQuery 且用了某些插件,注意版本兼容性(
bootstrap@5.3+推荐搭配jquery@3.7.1)
最常被忽略的一点:改完 _variables.scss 后,CSS 文件没更新?不是热重载没起作用,而是你根本没手动运行 npm run css —— Bootstrap 的构建不是监听式自动编译,保存即生效只存在于 Vite/HMR 等现代开发服务器中,原生 Bootstrap 仓库不提供这个能力。











