跳到主要内容

使用 Vite 在你的项目中包含和打包 Bootstrap 的 CSS 和 JavaScript 的官方指南。

想直接跳到最后吗? 从 twbs/examples 仓库 下载此指南的源代码和演示。

什么是 Vite?

Vite 是一个现代前端构建工具,旨在提高速度和简化操作。它提供了高效且简化的开发体验,尤其适用于现代 JavaScript 框架。

设置

我们正在从零开始构建一个使用 Bootstrap 的 Vite 项目,因此在真正开始之前,需要一些前提条件和初步步骤。本指南要求你已安装 Node.js,并对终端有一定的了解。

  1. 创建一个项目文件夹并设置 npm。 我们将创建 my-project 文件夹并使用npm初始化 -y 避免它向我们提出所有互动问题的论点。

    mkdir my-project && cd my-project
    npm init -y
    
  2. 安装 Vite。 与我们的 Webpack 指南不同,这里只有一个构建工具依赖。我们使用 --save-dev 表示该依赖仅用于开发,而不是用于生产环境。

    npm i --save-dev vite
    
  3. 安装 Bootstrap。 现在我们可以安装 Bootstrap。我们还将安装 Popper,因为我们的下拉菜单、弹出框和工具提示的位置依赖它。如果你不打算使用这些组件,可以在这里省略 Popper。

    npm i --save bootstrap @popperjs/core
    
  4. 安装额外的依赖项。 除了 Vite 和 Bootstrap,我们还需要另一个依赖项(Sass)来正确导入和打包 Bootstrap 的 CSS。

    npm i --save-dev sass
    

现在我们已经安装并设置好了所有必要的依赖项,我们可以开始创建项目文件并导入 Bootstrap。

项目结构

我们已经创建了 my-project 文件夹并初始化了 npm。现在我们还将创建我们的 src 文件夹、样式表和 JavaScript 文件,以完善项目结构。从 my-project 运行以下命令,或手动创建如下所示的文件夹和文件结构。

mkdir {src,src/js,src/scss}
touch src/index.html src/js/main.js src/scss/styles.scss vite.config.js

完成后,你的完整项目应该看起来像这样:

my-project/
├── src/
│   ├── js/
│   │   └── main.js
│   └── scss/
│   |   └── styles.scss
|   └── index.html
├── package-lock.json
├── package.json
└── vite.config.js

此时,一切都已到位,但 Vite 无法工作,因为我们还没有填写我们的 vite.config.js。

配置 Vite

在安装了依赖项并且我们的项目文件夹准备好可以开始编码之后,我们现在可以配置 Vite 并在本地运行我们的项目。

  1. 打开 vite.config.js 在你的编辑器中。 由于它是空白的,我们需要向其中添加一些模板配置,以便我们可以启动服务器。配置的这一部分告诉 Vite 去哪里查找我们项目的 JavaScript,以及开发服务器应该如何行为(从 src 带热重载的文件夹)。

    import { resolve } from 'path'
    

    export default { root: resolve(__dirname, 'src'), build: { outDir: '../dist' }, server: { port: 8080 }, // Optional: Silence Sass deprecation warnings. See note below. css: { preprocessorOptions: { scss: { silenceDeprecations: [ 'import', 'mixed-decls', 'color-functions', 'global-builtin', ], }, }, }, }

    注意: 在使用最新版本的 Dart Sass 编译源 Sass 文件时,会显示 Sass 弃用警告。这不会阻止 Bootstrap 的编译或使用。我们正在 正在进行长期修复,但在此期间,这些弃用通知可以被忽略。

  2. 接下来我们填充 src/index.html. 这是 Vite 将在浏览器中加载的 HTML 页面,用于使用我们将在后续步骤中添加到其中的打包 CSS 和 JS。

    <!doctype html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Bootstrap w/ Vite</title>
        <script type="module" src="./js/main.js"></script>
      </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>
      </body>
    </html>
    

    我们在这里加入了一点 Bootstrap 样式 div class="container" 和 <button> 这样我们就可以看到 Bootstrap 的 CSS 何时被 Vite 加载。

  3. 现在我们需要一个 npm 脚本来运行 Vite。 打开 package.json 并添加 start 下面显示的脚本(你应该已经有测试脚本)。我们将使用这个脚本来启动本地 Vite 开发服务器。

    {
      // ...
      "scripts": {
        "start": "vite",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      // ...
    }
    
  4. 最后,我们可以启动 Vite。 从 my-project 在你的终端中的文件夹里,运行那个新添加的 npm 脚本:

    npm start
    
    Vite dev server running

在本指南的下一节也是最后一节中,我们将导入所有的 Bootstrap CSS 和 JavaScript。

导入 Bootstrap

  1. 导入 Bootstrap 的 CSS。 添加以下内容到 src/scss/styles.scss 导入所有 Bootstrap 的源 Sass。

    // Import all of Bootstrap’s CSS
    @import "bootstrap/scss/bootstrap";
    

    如果你愿意,你也可以单独导入我们的样式表。 阅读我们的 Sass 导入文档 详情请参阅。

  2. 接下来我们加载 CSS 并导入 Bootstrap 的 JavaScript。 将以下内容添加到 src/js/main.js 加载 CSS 并导入所有 Bootstrap 的 JS。Popper 将通过 Bootstrap 自动导入。

    // Import our custom CSS
    import '../scss/styles.scss'
    

    // Import all of Bootstrap’s JS import * as bootstrap from 'bootstrap'

    你也可以根据需要单独导入 JavaScript 插件,以保持包的大小较小:

    import Alert from 'bootstrap/js/dist/alert';
    

    // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap';

    阅读我们的 JavaScript 文档 有关如何使用 Bootstrap 插件的更多信息。

  3. 你完成了!🎉 在 Bootstrap 的源 Sass 和 JS 完全加载后,你的本地开发服务器现在应该看起来像这样:

    Vite dev server running with Bootstrap

    现在你可以开始添加你想使用的任何 Bootstrap 组件。请确保 查看完整的 Vite 示例项目 关于如何包含额外的自定义 Sass,并通过仅导入所需的 Bootstrap CSS 和 JS 部分来优化构建。


在这里看到错误或过时的信息了吗?请 在 GitHub 上提交问题。需要帮助排查问题吗?在 GitHub 上搜索或发起讨论。