【gulp.watch】Sassの更新を監視して自動でタスクを実行(コンパイル)する方法
Web制作・プログラミング
※本サイトはアフィリエイト広告を利用しています。
【Sassを自動的にコンパイルする方法を知りたい人】
「gulpのwatchを使って、Sassを自動でコンパイルする方法が知りたいなぁ。」
こういった疑問に答えます。
本記事の内容
gulpには、タスクを監視する
『watch』という機能があり、
それを使えばSassを更新する度に
自動的にコンパイルしてくれるようになります。
今回は、過去にWeb制作会社にも
勤務していた経験のあるこの僕が
その設定方法について解説します。
また今回の内容は、
gulpなどのインストールは
済んでいることが前提なので、
これらの準備がまだの方は
下記の記事を参考にしてください。
≫【mac版】gulpのインストールから使い方までを解説【Web制作初心者向け】
【mac版】gulpのインストールから使い方までを解説【Web制作初心者向け】
macでgulpをインストールする方法が知りたいですか?本記事では、gulpのことを全く知らない人でもインストールできるようにコードや画像を多数掲載して分かりやすく解説しています。これからgulpを導入したいmacユーザーは必見です。
gulp.watchでSassを自動でコンパイルする方法
先ほど紹介した記事の通りに
gulpをインストールすると、
『gulpfile.js』内の記述は
下記のようになっていると思います。
【gulpfile.js】
const gulp = require('gulp');
const sass = require('gulp-sass');
gulp.task('sass', function() {
return gulp.src('./sass/**/*.scss')
.pipe(sass({outputStyle: 'expanded'}))
.pipe(gulp.dest('./css'));
});
この状態から
タスクを追加していきます。
下記のように、
タスク『watch』を追記してください。
【gulpfile.js】
const gulp = require('gulp');
const sass = require('gulp-sass');
gulp.task('sass', function() {
return gulp.src('./sass/**/*.scss')
.pipe(sass({outputStyle: 'expanded'}))
.pipe(gulp.dest('./css'));
});
//watchタスクを追記
gulp.task('watch', function() {
gulp.watch('./sass/**/*.scss', gulp.task('sass'));
});
こちらのコードの見方ですが、
タスク『watch』を定義していて、
そのwatchメソッドの
第一引数で監視するフォルダのパス、
第二引数で実行するタスク
を指定しています。
(※フォルダのパスは
必要に応じて変更してください。)
では、いま定義した
『watch』タスクを実行してみましょう。
下記のコマンドを実行すると
ファイルの監視(watch)が始まります。
gulp watch
これで常に
指定したパスのファイルを
監視している状態となり、
更新をするたびに
自動でコンパイルしてくれます。
ファイルの監視(watch)を止めたい場合は?
ちなみに、
監視を止めたい場合には
『control + c』
のコマンドを入力すれば
中止することが出来ます。
エラー時にgulp.watchを停止させない方法
ここまでで、
ファイルを保存するだけで
自動的にコンパイルしてくれるようになりました。
ただ、設定的にはまだ不十分でして、
なぜかというと、エラーになるとwatch機能が止まってしまうから。
エラーが出るたびに、
- エラー箇所の修正
- タスク実行のコマンドを入力
↓
上記の作業が発生するとなると、、普通に面倒ですよね。
なので、
エラーが出ても監視を停止しない
ように設定をしていきましょう。
まず、gulpのプラグインである
「gulp-plumber」パッケージをインストールします。
下記のコマンドを実行してください。
npm i -D gulp-plumber
インストールしたら、
gulpfile.jsに記述を追加します。
const gulp = require('gulp');
const sass = require('gulp-sass');
//gulp-plumberを読み込み
const plumber = require('gulp-plumber');
gulp.task('sass', function() {
return gulp.src('./sass/**/*.scss')
.pipe(plumber()) //「gulp.src」の直下に追記
.pipe(sass({outputStyle: 'expanded'}))
.pipe(gulp.dest('./css'));
});
gulp.task('watch', function() {
gulp.watch('./sass/**/*.scss', gulp.task('sass'));
});
追記後は、上記のようになります。
これでエラーが出ても
watchタスクが止まらなくなり、
エラーが出る度にコマンドを入力する手間が無くなりました。
gulp.watchのエラーに気付くように通知を出す方法
ここまでで、
Sassファイルを更新するたびに
自動でコンパイルをし、
コンパイルエラーが出ても
監視を停止しないように設定しました。
しかしこのままでは
エラー自体に気が付かない
という可能性がありますので、
エラー時には分かりやすく
通知を出すように設定します。
ではまず、
「gulp-notify」というパッケージを
インストールしていきます。
npm i -D gulp-notify
インストールが出来たら例のごとく、
gulpfile.jsにコードを追記していきます。
const gulp = require('gulp');
const sass = require('gulp-sass');
const plumber = require('gulp-plumber');
//「gulp-notify」を読み込み
const notify = require('gulp-notify');
gulp.task('sass', function() {
return gulp.src('./sass/**/*.scss')
//plumberの引数に追記
.pipe(plumber({errorHandler: notify.onError(
"Error: <%= error.message %>"
)}))
.pipe(sass({outputStyle: 'expanded'}))
.pipe(gulp.dest('./css'));
});
gulp.task('watch', function() {
gulp.watch('./sass/**/*.scss', gulp.task('sass'));
});
今回は今までとは少し違い、
notifyをplumberの引数に追記します。
これでエラーが出た際に、
通知がくるようになります。
タスクを追加する際の注意点【watchを停止】
このwatchに関連した
タスク追加時の注意点がありまして、
それが、タスク追加時にはwatchは停止しておくこと。
gulpのwatchの機能を
オンにしたままの状態で
gulpfile.jsを更新しても、
その変更内容が適用されません。
なので、
タスクを追加したい時は
watchの機能を止めてから行う
という点に注意してください。
繰り返しになりますが、
監視を止めたい場合には
『control + c』
で止めることができます。
というわけで、今回は以上です!
gulpの他の機能に関する記事を
以下にまとめているので、
もし良ければこちらも参考にしてください。
gulpの『その他のタスク』に関する記事
≫ SassのoutputStyleについて解説【全4種類】
SassのoutputStyleについて解説【全4種類】
Sassをコンパイルした際に書き出されるCSSの形式『outputStyle』について知りたいですか?本記事では、そのoutputStyleの種類や特徴、またそれぞれの使い分けについて解説します。SassのoutputStyleについて知りたい人は是非ご覧ください。
≫ Sass(scss)のパーシャルファイルの使い方【globで一括読み込み】
Sass(scss)のパーシャルファイルの使い方【globで一括読み込み】
Sass(scss)のパーシャルファイルについて知りたいですか?本記事では、Sassのパーシャルファイルの使い方や読み込み方について、基礎から応用レベルまで解説しています。Sass(scss)でパーシャルファイルの機能を使いこなしたい方は必見です。
≫ Sassのコンパイル時に生成される「ソースマップ」について解説【役割や使い方・gulpでの設定手順】
Sassのコンパイル時に生成される「ソースマップ」について解説【役割や使い方・gulpでの設定手順】
Sassをコンパイルした際に生成される「ソースマップ」について知りたいですか?本記事では、そんなソースマップの「役割」や「使い方」、gulpでの設定手順を解説しています。Sassのソースマップについて詳しく知りたい方は是非ご覧ください。
≫【Sassユーザー必見】ベンダープレフィックスを自動で付ける方法【Autoprefixer/gulp版】
【Sassユーザー必見】ベンダープレフィックスを自動で付ける方法【Autoprefixer/gulp版】
Sassでベンダープレフィックスを自動で付ける方法が知りたいですか?本記事では、gulpというツールを用いてSassのコンパイル時にベンダープレフィックスを自動付与するAutoprefixerの使い方を紹介します。Sassユーザーは必見の内容です!