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.3.0"での変更はv5.3.0-alpha版での変更も含みます。
※Viteについては、Vite日本語版を参照。
セットアップ(Setup)
Bootstrapを使用してViteプロジェクトをゼロから構築しているため、実際に始める前に、いくつかの前提条件と前段階がある。このガイドでは、既にNode.jsがインストールされており、ある程度ターミナル(コマンドプロンプト)に精通している必要がある。
-
プロジェクトフォルダを作成し、npmをセットアップ。
my-project
フォルダを作成し、npmを-y
引数で初期化して、すべてのインタラクティブな質問を回避する。実行コマンド
$ mkdir my-project && cd my-project $ npm init -y
-
Viteをインストール。webpackガイドとは異なり、ここでは構築ツールの依存関係は1つしかない。Viteは、言語トランスフォーマー(Sassなど)を検出すると、それらを自動的にインストールする。
--save-dev
を使用して、この依存関係が開発用であり、本番用ではないことを通知する。実行コマンド
$ npm i --save-dev vite
-
Bootstrapをインストール。これで、Bootstrapがインストールできる。ドロップダウン、ポップオーバー、ツールチップはPopperに依存しているため、Popper(
@popperjs/core
)もインストールする。これらのコンポーネントを使用する予定がない場合は、ここでPopperを省略しても可。実行コマンド
$ npm i --save bootstrap @popperjs/core
-
追加の依存関係をインストール。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を構成して、プロジェクトをローカルで実行できる。
-
エディタで
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 } }
-
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のスタイルを少しだけ入れている。 -
ここで、Viteを実行するためのnpmスクリプトが必要。
package.json
を開き、以下に示すstart
スクリプトを追加(すでにtestスクリプトが用意されているはず)。このスクリプトを使用して、ローカルVite開発サーバーを起動する。package.json
の設定例{ // ... "scripts": { "start": "vite", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
そして最後に、Viteを起動。ターミナルの
my-project
フォルダから、新しく追加されたnpmスクリプトを実行:実行コマンド
$ npm start
このガイドの次が最後となる項目では、Viteローダーをセットアップし、BootstrapのCSSとJavaScriptをすべてインポートする。
Bootstrapのインポート(Import Bootstrap)v5.3.0更新
-
BootstrapのCSSをインポートする。以下を
src/scss/styles.scss
に追加して、BootstrapのすべてのソースSassをインポート。src/scss/styles.scss
の設定例 緑背景が5.3.0での変更箇所// BootstrapのCSSをすべてインポート @import "bootstrap/scss/bootstrap";
必要に応じて、スタイルシートを個別にインポートすることもできる。詳細については、Sassカスタマイズのインポートの項目に記載。
-
次に、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の解説に記載。
-
これで完了!🎉BootstrapのソースSassとJSが完全に読み込まれると、ローカル開発サーバーは次のようになる:
これで、使用する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で検索するか、ディスカッションを始めて下さい。