まとめ
- feat: Bootstrap 5 を Laravel 8 の Vue.js 3 SPA に導入する · oki2a24/laravel8-boilerplate@dd592f4 or feat: Bootstrap 5 を Laravel 8 の Vue.js 3 SPA に導入する by oki2a24 · Pull Request #4 · oki2a24/laravel8-boilerplate にやったことが全て残っている。
- npm install したもの
@popperjs/core
bootstrap
resolve-url-loader
sass
sass-loader
laravel/webpack.mix.js
に npm build 時の Bootstrap 5 の SASS の設定を追加laravel/resources/js/bootstrap.js
に Bootstrap 5 の読み込を追加laravel/resources/sass/app.scss
ファイルを追加し、 Bootstrap 5 の SASS を読み込む。laravel/resources/sass/_variables.scss
ファイルを追加した。 Bootstrap 5 をカスタマイズする時の内容を書くためのファイル
Bootstrap 5 導入メモ
npm install --save-dev bootstrap @popperjs/core
laravel/resources/js/bootstrap.js
で Bootstrap5 を読み込むために次を追加。
require('bootstrap');
laravel/resources/sass/_variables.scss
を作成しておき、 Bootstrap5 をカスタマイズしたくなったらこのファイルに書くようにする。下記ファイルのコメントを外して npm build するとウェブブラウザで表示した時に背景が変わるはず。
//$body-bg: #000;
laravel/resources/sass/app.scss
で Bootstrp5 の SCSS 読み込み。このファイルで Bootstrap5 のカスタマイズも可能になる。
// Variables
@import 'variables';
// Bootstrap
@import '~bootstrap/scss/bootstrap';
laravel/webpack.mix.js
で npm build 時に入力の SCSS と出力先を指定する。
.sass('resources/sass/app.scss', 'public/css')
.sourceMaps();
Bootstrap 5 をカスタマイズ可能にする際の注意点
NPM 依存パッケージを追加でインストールする必要がありました。
sass-loader@^12.1.0
sass
resolve-url-loader@^5.0.0
以下、経緯です。
laravel/webpack.mix.js
.sass('resources/sass/app.scss', 'public/css')
ビルドしてみると、 npm install sass-loader@^12.1.0 sass resolve-url-loader@^5.0.0 --save-dev --legacy-peer-deps
を実行して追加のパッケージをインストールするように促されました。
app@eafcef814c18:/var/www/html/laravel$ npm run watch
> watch
> mix watch
Additional dependencies must be installed. This will only take a moment.
Running: npm install sass-loader@^12.1.0 sass resolve-url-loader@^5.0.0 --save-dev --legacy-peer-deps
Finished. Please run Mix again.
app@eafcef814c18:/var/www/html/laravel$
Bootstrap 5 の導入を、 laravel/ui と比較する。
laravel/ui: Laravel UI utilities and presets. の次の部分を参考にすることで、スムースに導入することができました。
- ui/Bootstrap.php at 1596de849ecafc0bcc891389da939012b67f9d5c · laravel/ui 。このファイルで Bootstrap 5 を導入するために行う操作、配置するファイルのリストを確認できました。
おわりに
今回、 laravel/ui そのものは使わず、手作業で Bootstrap 5 を導入しました。その後に laravel/ui で Bootstrap 5 を導入してみて差分を確認、という形で進めました。
laravel/ui は基本的にファイルをコピーして上書きするだけです。ですので、コピー後は laravel/ui は削除して、コピーしたファイルをカスタマイズする、というやり方が効率的かと思います。Laravel 9 などで同じことを行うときは、やってみようかと思いました。