2021.03.22

Node.js

gulp-plumberとgulp-notifyでエラーを通知

gulpのwatchメソッドでscssファイルを監視し、scssファイル更新時にsassを自動コンパイルする場合、scssファイル内に記述エラーがあるとwatchメソッドは停止してしまいます。

gulp-plumberはstream中のエラーでタスクが強制停止するのを防止するパッケージです。gulp-plumberをインストールして確認します。

//gulp-plumberのインストール
npm install gulp-plumber

gulpfile.jsにgulp-plumberの処理を追加します。sassコンパイル時にsrcメソッドでscssファイルを取得する処理の後にgulp-plumberを実行します。

//gulpfile.js
const gulp = require('gulp');
const plumber = require('gulp-plumber');  //gulp-plumberの読み込み
const sass = require('gulp-sass');

function styles() {
  return gulp
    .src('./src/scss/**/*.scss')
    .pipe(plumber())  //gulp-plumberの実行
    .pipe(
      sass({
        outputStyle: 'expanded'
      })
    )
    .pipe(
      gulp
        .dest('../assets/css')
    );
}

function watchFiles() {
  gulp.watch('./src/scss/**/*.scss').on('change', styles);
}

gulp.task('default', gulp.series(styles, watchFiles));

scssファイル監視中、scssファイルの更新で意図的にエラーを発生させます。変数名の記述ミスで定義されていない変数名を参照します。

//_access.scss
@charset "UTF-8";

$fontColor: #ff0000;

.p-access {
  text-align: center;

  &-ttl {
    //変数名の記述ミス
    color: $fontcolor;
  }
}

するとgulp-plumberがエラーを検知してwatchメソッドの停止を防止します。再度エラーのない状態でscssファイルを更新するとwatchメソッドが動作して正常にsassがコンパイルされます。

次にgulp-notifyをインストールして、gulp-plumberで検知したエラーをコマンドラインとデスクトップに通知します。

//gulp-notifyのインストール
npm install gulp-notify

gulpfile.jsにgulp-notifyの処理を追加します。gulp-plumberで検知したエラーはgulp-plumberのオプションerrorHandlerで取得できます。

//gulpfile.js
const gulp = require('gulp');
const plumber = require('gulp-plumber');  //gulp-plumberの読み込み
const notify = require('gulp-notify');  //gulp-notifyの読み込み
const sass = require('gulp-sass');

function styles() {
  return gulp
    .src('./src/scss/**/*.scss')
    .pipe(
      plumber({  //gulp-plumberの実行
        errorHandler: notify.onError('<%= error.message %>'),  //gulp-notifyの実行
      })
    )
    .pipe(
      sass({
        outputStyle: 'expanded'
      })
    )
    .pipe(
      gulp
        .dest('../assets/css')
    );
}

function watchFiles() {
  gulp.watch('./src/scss/**/*.scss').on('change', styles);
}

gulp.task('default', gulp.series(styles, watchFiles));

再度scssファイル監視中に、scssファイルの更新でエラーを発生させます。gulp-notifyによってコマンドラインとデスクトップにエラーが通知されます。

関連記事

2021.03.22

Node.js

gulpのwatchメソッドでsassを自動コンパイル

gulpのwatchメソッドでscssファイルを常時監視し、scssファイルが更新されたタイミングでsassをコンパイルします。 gulpfile.jsにwat…

2021.03.07

Node.js

.eslintrcの設定

ESLintはJavaScriptの構文をチェックするツール(Linter)の一つで、.eslintrcはESLintの設定ファイルです。以下を記述することでE…

2021.10.09

Node.js

gulp-sass 5.0について

2021年7月にgulp-sassのメジャーバージョンが4から5にアップデートされました。gulp-sass 5.0の動作要件はnode.jsバージョン12以上…

2021.01.16

Node.js

npm updateでパッケージのバージョンを更新

npm updateでパッケージのバージョンを更新します。更新を確認するためにまず、jqueryの古いバージョンである2.2.0をインストールします。 実行が完…

2021.03.06

Node.js

gulp-eslintの動作要件

gulp-eslint実行時に以下のようなエラーが発生する場合があります。これはgulp-eslintがインストールされていても、parserで使用しているba…

上に戻る