メインコンテンツにスキップ ドキュメントナビゲーションにスキップ

Viteでの使用(Bootstrap and Vite) v5.2.0新設 v5.3.0更新

Viteを使用してBootstrapのCSSとJavaScriptをプロジェクトに組み込みバンドルする方法の公式ガイド。

※"v5.0.0"での変更はv5.0.0-alpha版、v5.0.0-beta版での変更も含みます。

※"v5.2.0"での変更はv5.2.0-beta1での変更も含みます。
※"v5.3.0"での変更はv5.3.0-alpha版での変更も含みます。
このページの項目 v5.2.0新設 v5.3.0更新
bootstrap-vite.png

※Viteについては、Vite日本語版を参照。

セットアップ(Setup)

Bootstrapを使用してViteプロジェクトをゼロから構築しているため、実際に始める前に、いくつかの前提条件と前段階がある。このガイドでは、既にNode.jsがインストールされており、ある程度ターミナル(コマンドプロンプト)に精通している必要がある。

  1. プロジェクトフォルダを作成し、npmをセットアップ。my-project フォルダを作成し、npmを -y 引数で初期化して、すべてのインタラクティブな質問を回避する。

    実行コマンド$ mkdir my-project && cd my-project
    $ npm init -y
  2. Viteをインストール。webpackガイドとは異なり、ここでは構築ツールの依存関係は1つしかない。Viteは、言語トランスフォーマー(Sassなど)を検出すると、それらを自動的にインストールする。--save-dev を使用して、この依存関係が開発用であり、本番用ではないことを通知する。

    実行コマンド$ npm i --save-dev vite
  3. Bootstrapをインストール。これで、Bootstrapがインストールできる。ドロップダウン、ポップオーバー、ツールチップはPopperに依存しているため、Popper(@popperjs/core)もインストールする。これらのコンポーネントを使用する予定がない場合は、ここでPopperを省略しても可。

    実行コマンド$ npm i --save bootstrap @popperjs/core
  4. 追加の依存関係をインストール。ViteとBootstrapに加えて、BootstrapのCSSを適切にインポートしてバンドルするには、別の依存関係(Sass)が必要。
    実行コマンド$ npm i --save-dev sass

必要なすべての依存関係がインストールとセットアップされれば、プロジェクトファイルの作成とBootstrapのインポートに取り掛かることができる。

プロジェクト構造(Project structure)

すでに 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.config.js をまだ入力していないため、Viteは機能しない。

Viteを構成する(Configure Vite)v5.3.3更新

依存関係がインストールされ、プロジェクトフォルダでコーディングを開始できるようになったら、Viteを構成して、プロジェクトをローカルで実行できる。

  1. エディタで vite.config.js を開く。ファイルの中は空白なので、サーバーを起動するために定型的な設定を追加する必要がある。構成のこの部分は、ViteにプロジェクトのJavaScriptを探す場所と、開発サーバーの動作(ホットリロードで src フォルダから取得する)を指示する。

    vite.config.js の設定例 緑背景が5.3.3での変更箇所
    import { resolve } from 'path'
    
    export default {
      root: resolve(__dirname, 'src'),
      build: {
        outDir: '../dist'
      },
      server: {
        port: 8080
      }
    }
  2. src/index.html ファイルを作成。これは、後の手順で追加するバンドルされたCSSとJSを利用するためにwebpackがブラウザにロードするHTMLページである。

    src/index.html の設定例 緑背景が5.3.0での変更箇所
    <!doctype html>
    <html lang="ja">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Vite付きBootstrap</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のCSSがViteによって読み込まれるタイミングが確認できるように、div class="container"<button> を使用したBootstrapのスタイルを少しだけ入れている。

  3. ここで、Viteを実行するためのnpmスクリプトが必要。package.json を開き、以下に示す start スクリプトを追加(すでにtestスクリプトが用意されているはず)。このスクリプトを使用して、ローカルVite開発サーバーを起動する。

    package.json の設定例
    {
      // ...
      "scripts": {
        "start": "vite",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      // ...
    }
  4. そして最後に、Viteを起動。ターミナルの my-project フォルダから、新しく追加されたnpmスクリプトを実行:

    実行コマンド$ npm start
    実行中のVite開発サーバー

このガイドの次が最後となる項目では、Viteローダーをセットアップし、BootstrapのCSSとJavaScriptをすべてインポートする。

Bootstrapのインポート(Import Bootstrap)v5.3.0更新

  1. BootstrapのCSSをインポートする。以下を src/scss/styles.scss に追加して、BootstrapのすべてのソースSassをインポート。

    src/scss/styles.scss の設定例 緑背景が5.3.0での変更箇所
    // BootstrapのCSSをすべてインポート
    @import "bootstrap/scss/bootstrap";

    必要に応じて、スタイルシートを個別にインポートすることもできる。詳細については、Sassカスタマイズのインポートの項目に記載。

  2. 次に、CSSをロードし、BootstrapのJavaScriptをインポート。以下を src/js/main.js に追加して、CSSをロードし、BootstrapのすべてのJSをインポート。PopperはBootstrapを介して自動的にインポートされる。

    src/js/main.js の設定例
    全てをインポート// カスタムCSSをインポート
    import '../scss/styles.scss'
    
    // BootstrapのJSをすべてインポート
    import * as bootstrap from 'bootstrap'

    バンドルサイズを抑えるために、必要に応じてJavaScriptプラグインを個別にインポートすることもできる。

    個別にインポートimport Alert from 'bootstrap/js/dist/alert'
    
    // または、必要なプラグインを指定:
    import { Tooltip, Toast, Popover } from 'bootstrap'

    Bootstrapのプラグインの使用方法の詳細については、JavaScriptの解説に記載。

  3. これで完了!🎉BootstrapのソースSassとJSが完全に読み込まれると、ローカル開発サーバーは次のようになる:

    Bootstrapで実行されているVite開発サーバー

これで、使用するBootstrapコンポーネントの追加が始められる。追加のカスタムSassを組み込み、BootstrapのCSSとJSの必要な部分のみをインポートして構築を最適化する方法については、完全なViteサンプルプロジェクトを必ずチェックして下さい。

【変更履歴】
  • 【v5.3.0】
    • vite.config.js の設定:build: の追加、server から hot: true の設定を削除
    • src/index.html の設定:js/main.js の設定を </body> の前から </head> の前に移動
    • Bootstrapのインポートでの vite.config.js の設定を削除
    • src/scss/styles.scss の設定:@import "~bootstrap/scss/bootstrap";@import "bootstrap/scss/bootstrap";
  • 【v5.3.3】
    • vite.config.js の設定:
      • const path = require()import { resolve } from
      • root: path.resolve()root: resolve()

ここで何か間違いがあったり、情報が古くなっていたら、GitHubのIssuesを開いてご指摘下さい。トラブルシューティングのサポートが必要なら、GitHubで検索するか、ディスカッションを始めて下さい。