vite环境下使用bootstrap

环境

nodejs 18
pnpm

初始化

bash 复制代码
pnpm init
pnpm add -D vite --registry http://registry.npm.taobao.org
pnpm add bootstrap @popperjs/core --registry http://registry.npm.taobao.org
pnpm add -D sass --registry http://registry.npm.taobao.org

新建vite.config.js

js 复制代码
const path = require('path')

export default {
    root: path.resolve(__dirname, 'src'),
    server: {
        port: 8080,
        hot: true
    }
}

src下新建index.html

html 复制代码
<!doctype html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap Vite</title>
</head>
<body>
<div class="container py-4 px-3 mx-auto">
    <h1>Hello, Bootstrap and Vite!</h1>
    <button class="btn btn-primary">Primary button</button>
</div>
<script type="module" src="./js/main.js"></script>
</body>
</html>

修改package.json

json 复制代码
  "scripts": {
    "start": "vite"
  },

运行

bash 复制代码
pnpm start

引入bootstrap

修改vite.config.js

js 复制代码
const path = require('path')

export default {
    root: path.resolve(__dirname, 'src'),
    resolve: {
        alias: {
            '~bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'),
        }
    },
    server: {
        port: 8080,
        hot: true
    }
}

新建 src/scss/styles.scss

css 复制代码
@import "~bootstrap/scss/bootstrap";

新建src/js/main.js

js 复制代码
// Import our custom CSS
import '../scss/styles.scss'

// Import all of Bootstrap's JS
import * as bootstrap from 'bootstrap'
//单个引入
//import {Button} from 'bootstrap'

打包

修改package.json

json 复制代码
  "scripts": {
    "start": "vite",
    "build": "vite build"
  },

执行pnpm build

dist相对于index.html,默认会在src目录下和index.html同级

如果想打包到src目录外可以设置相对路径

js 复制代码
const path = require('path')

export default {
    root: path.resolve(__dirname, 'src'),
    resolve: {
        alias: {
            '~bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'),
        }
    },
    server: {
        port: 8080,
        hot: true
    },
    build:{
        outDir:'../dist'
    }
}
相关推荐
康小汪2 分钟前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
智能运维指南40 分钟前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
白山编程大哥2 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Flynt3 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
Csvn4 小时前
bundle优化
前端
北冥有鱼4 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚4 小时前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端
用户37203749260184 小时前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能5 小时前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师5 小时前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端