1

私は and を使用gulp-notifyして、gulp でエラーをスローしてビルドプロセス全体を停止する前に、gulp-plumberエラーをキャッチして通知します。gulp-sassただし、 で示されるエラーgulp-notifyは特に役に立ちません。エラーのあるファイルへのパス全体が含まれています。ファイルへのパスが何であるかを知っている可能性が最も高いので、ファイル名と行番号 (および追加されたが必須ではないボーナスとして列番号) と実際のエラーメッセージを知る必要があるだけです。これが私のコードです:

gulp.task('styles', function () {
    var onError = function(err) {
      notify.onError({
        title:    "Gulp",
        subtitle: "Build Error!",
        message:  "<%= error.message %>",
        sound:    "Beep"
      })(err);
      this.emit('end');
    };
    gulp.src('assets/styles/source/style.scss')
        .pipe(plumber({errorHandler: onError}))
        .pipe(sass({
            style: 'compressed',
            errLogToConsole: false
         }))
        .pipe(gulp.dest('assets/styles/build'))
        .pipe(autoprefixer({
            browsers: ['last 2 versions', 'ie 9', 'ios 6', 'android 4'],
            cascade: false
        }))
        .pipe(gulp.dest('assets/styles/build'))
        .pipe(minifyCSS({
            keepSpecialComments: '*'
        }))
        .pipe(gulp.dest('./'))
        .pipe(reload({stream: true}));
});

もっとあります(gulp-watch、、、browsersyncいくつかのJSのものなど)が、問題を解決するために必要なのは上記だけだと思います。そうでない場合はお知らせください!

私の質問は、エラー メッセージを変更して、ファイル名、行番号、およびエラー メッセージ (例: _header.scss:17 - 無効なプロパティ名) のみを表示するにはどうすればよいですか? 現在使用error.messageしていますが、表示したいものを取得するために使用できるタグが見つかりません。

ありがとうございました!

4

1 に答える 1

0

これが私がその問題を解決した方法です:

.pipe(sass(
    ({
      style: 'compressed',
      errLogToConsole: false,
      onError: function(error) {
        notify({
          title: "SASS ERROR",
          message: "line " + error.line + " in " + error.file.replace(/^.*[\\\/]/, '') + "\n" + error.message
        }).write(error);
      }
    })
  )
)

また、改行 "\n" を 1 つしか指定できないことにも気付きました。そのため、必要な情報をそれぞれの行に分割することができませんでした。

于 2015-08-12T21:31:39.470 に答える