開発環境
- Laravel 8.0
- php 7.3
- laravel-mix 5.0.1
#はじめに
今回はlaravelにSCSSを導入してから実際にコンパイルするまでの流れを記事にしています。
※すでにLaravelプロジェクトを立ち上げている前提での手順になりますのでご了承ください
##Laravel Mix
Laravel Mixとは、フロントエンドのアセットをコンパイル、バンドルしてくれるツール。
ツールの中身はwebpackを利用している
webpackを使うと何がいいの?
・依存性を解決できる
・リクエスト数を減らすことができる
SCSSを導入するにあたって本記事ではLaravel Mixを使用します。
すでに、package.jsonにLaravel Mixは最初から記述されているためターミナルでnpm installしちゃいましょう
$ npm install
次にwebpack.mix.jsを開いてみるとこんな感じになってます
webpack.mix.jsとはwebpackというJavaScriptパッケージツールで使うもの(ラッパー)
const mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel applications. By default, we are compiling the CSS
| file for the application as well as bundling up all the JS files.
|
*/
mix.js('resources/js/app.js', 'public/js')
.postCss('resources/css/app.css', 'public/css', [
//
]);
実際にコンパイルしてみる
まずはresources内にsassディレクトリを作成して、その中にapp.scssを作成します。
そして、webpack.mix.jsを下記内容に編集
const mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel applications. By default, we are compiling the CSS
| file for the application as well as bundling up all the JS files.
|
*/
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css');
// resources/sass/app.scssを参照して、public内にcssのファイルを作成します
編集したらターミナルでnpm run dev
$ npm run dev
成功したら、public内にcssが生成されているのを確認してください。
以上でLaravel Mixを使用してSCSSを導入するまでの流れになります。
補足
バンドル(合体)してコンパイルするケース↓↓
// jsファイルをバンドル(合体)したい場合
mix
.scripts([ 'public/js/app.js' , 'public/js/app2.js' ], 'public/js/all.js' );
//[admin.jsとdashboard.js]を all.js としてバンドル(合体)させます。
// cssファイルをバンドル(合体)したい場合
mix
.styles([ 'public/css/app.css' , 'public/css/app2.css' ], 'public/css/all.css' );
// app.css と app2.css をバンドル(合体)させて
// publicフォルダに all.css を作成します。
5:各views/○○○○.blade.phpでの使用方法
<!-- Scripts(JSの場合※srcで呼び出します。) -->
<script src="./public/index.js"></script>
<!-- Styles(CSSの場合※hrefで呼び出します。) -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
###便利コマンド
公式ドキュメント参照
npm run watch
コマンドはターミナルで実行し続け、関連ファイル全部の変更を監視します。
Webpackは変更を感知すると、アセットを自動的に再コンパイルします。
npm run watch-poll
特定の環境のWebpackでは、ファイル変更時に更新されないことがあります。
自分のシステムでこれが起きた場合は、watch-pollコマンドを使用してください。