準備
-
npmというパッケージマネージャでのインストールを行います。
-
Laravel標準のBootstrapではなく、どうしてもMaterializeを使ってみたかったのでこれを導入します。
-
Materialize以外でも、npmでインストールできればやり方は同じです。
環境
- Laravel Framework 7.22.4
- Materialize 1.0.0
導入
1. Sassを使えるようにする
まずSassを使えるようにします。
シンプルでわかりやすかった記事のリンクを貼っておきます。
LaravelにSCSSの導入方法
2.Materializeを導入
公式サイトのGetting Startedにあるコマンドを入れてインストールします。
npm install materialize-css
3. Materializeを読み込むように設定
// Bootstrap
@import '~bootstrap/scss/bootstrap';
↑この部分を
// Materialize
@import '~materialize-src/sass/materialize.scss';
↑に変更します
ちなみにフルパスはnode_modules/materialize-src/sass/materialize.scss
です。
4. 変更を適用
npm run dev
念の為、コンパイル先を確認します。
@import url(https://fonts.googleapis.com/css?family=Nunito);@charset "UTF-8";
.materialize-red {
background-color: #e51c23 !important;
}
.materialize-red-text {
color: #e51c23 !important;
}
.materialize-red.lighten-5 {
background-color: #fdeaeb !important;
~省略~
materialize-red
などそれっぽいものが書かれているのでコンパイルされているようです。
###5. 完成
最後に、CSSを適用させたいビューテンプレートのheadタグ中に
<link href="{{ asset('/css/app.css') }}" rel="stylesheet">
を書いてあげれば完成です。
layouts/app.blade.php
に書いて全ページに適用させるのが良いと思います。
番外編:導入される仕組み
ここまでで導入はできました。
導入された仕組みを書いてみたので時間があれば読んでみてください。
まずプロジェクトフォルダ直下のwebpack.mix.jsを開きます。
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css');
この.sass('~')
の部分でwebpackがresources/sass/app.scss
ファイルをコンパイルしてpublic/css/app.css
に出力してくれているようです。
そのため、コンパイル元のresources/sass/app.scss
を見てみます。
// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');
// Variables
@import 'variables';
// Bootstrap
@import '~bootstrap/scss/bootstrap';
ここでBootstrapを読み込んでいました。~の部分はnode_modules/
が省略されてます。
つまり**resources/sass/app.scss
ファイルで読み込むパッケージを指定してコンパイルしている**という事でした。