SCSSコンパイルのエラー時にデスクトップ通知を出す方法
gulpでSCSSコンパイルする時、
エラーが起きて処理が出来てないことに気が付かない事が多かったので、
デスクトップ通知されるようにしてみました。
「gulp-notify」「node-notifier」2つのpackegeを使ってみたので、
どちらもまとめておきます。
gulp-notifyの場合
gulp-notifyをinstall
npm install --save-dev gulp-notify
gulpfile.jsにtaskを書く
var gulp = require('gulp');
var sass = require('gulp-sass');
var plumber = require('gulp-plumber');
// watch中にエラーが起きても停止しないように「gulp-plumber」を使っています
var notify = require("gulp-notify");
var DIR = {
sass: 'src/scss/**/*.scss',
css: 'assets/css'
}
/**
* compile sass
*/
gulp.task('sass',function(){
return gulp.src(DIR.sass)
.pipe(plumber({
errorHandler: notify.onError({
title: "失敗してるよ!", // 任意のタイトルを表示させる
message: "<%= error.message %>" // エラー内容を表示させる
})
}))
.pipe(sass({outputStyle : 'compressed',errLogToConsole: false}))
.pipe(gulp.dest(DIR.css));
});
gulp.task('watch-sass', function() {
gulp.watch(DIR.sass , ['sass']);
});
エラーを発生させてみる
main {
display: block;
// 閉じタグなし
通知が出た!
・デスクトップ通知と一緒に、カエルの音が出ます。ゲロゲロ
・エラーが起きたファイルと、内容が表示されます。
・gulpのかわいいアイコン!
ターミナルにもエラーメッセージが出る
node-notifierの場合
node-notifierをinstall
npm install --save-dev node-notifier
gulpfile.jsにtaskを書く
var gulp = require('gulp');
var sass = require('gulp-sass');
var plumber = require('gulp-plumber');
var notifier = require('node-notifier');
var DIR = {
sass: 'src/scss/**/*.scss',
css: 'assets/css'
}
/**
* compile sass
*/
gulp.task('sass',function(){
return gulp.src(DIR.sass)
.pipe(plumber(function(error){
notifier.notify({
title: '失敗してるよ!', // 任意のタイトルを表示させる
message: error.message // エラー内容を表示させる
});
}
))
.pipe(sass({outputStyle : 'compressed',errLogToConsole: false}))
.pipe(gulp.dest(DIR.css));
});
gulp.task('watch-sass', function() {
gulp.watch(DIR.sass , ['sass']);
});
エラーを発生させてみる
main {
display: block;
// 閉じタグなし
通知が出た!
・エラーが起きたファイルと、内容が表示されます。
・初期値は音なし。(オプションでつける事も出来ます。)
・アイコンはターミナル。
ターミナルにエラーメッセージが出なくなる
通常「node-notifier」を入れていなくてもエラーメッセージが出るはずですが、
ターミナルは変化なし。
エラーがなくても通知出来る
/**
* start watch-sass
*/
notifier.notify('watchを開始します!');
カスタマイズも出来る!
ターミナルのアイコンがかわいくないので、画像を変更してみます。
ついでに、分かりやすいように音も出しました。
var gulp = require('gulp');
var sass = require('gulp-sass');
var plumber = require('gulp-plumber');
var notifier = require('node-notifier');
var path = require('path');
var DIR = {
sass: 'src/scss/**/*.scss',
css: 'assets/css'
}
/**
* compile sass
*/
gulp.task('sass',function(){
return gulp.src(DIR.sass)
.pipe(plumber(function(error){
notifier.notify({
title: '失敗してるよ!',
message: error.message,
icon: path.join(__dirname, 'error.png'), // 任意の画像を指定する
sound: true // 音を付ける
});
}
))
.pipe(sass({outputStyle : 'compressed',errLogToConsole: false}))
.pipe(gulp.dest(DIR.css));
});
gulp.task('watch-sass', function() {
gulp.watch(DIR.sass , ['sass']);
});
エラーを発生させてみる
main {
display: block;
// 閉じタグなし
通知が出た!
かわいい絵文字のアイコンに変わってますね!
(音もちゃんと出てます。)
まとめ
どちらも導入したらサクッと使えて便利ですが、
「gulp-notify」はデスクトップ通知と同じように、
ターミナルにもエラーメッセージがちゃんと表示してくれるのが良い!
逆に、「node-notifier」はターミナルにエラーメッセージが出なくなるのが難点。
console.logでレスポンスを返してみましたが、
該当の行数までは出してくれませんでした。
ただ、エラー時以外にも通知を出せるので、
用途に合わせて使えそうですね。
おわり!
Author And Source
この問題について(SCSSコンパイルのエラー時にデスクトップ通知を出す方法), 我々は、より多くの情報をここで見つけました https://qiita.com/kfunnytokyo/items/1f62d9b6f0d3e2129faf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .