Search code examples
gulpgulp-less

Is there a way to get gulp to pass along error messages/position?


I've created a less task:

var gulp = require('gulp'),
    less = require('gulp-less');

gulp.task('dktest-less', function () {
    gulp.src('dktest/**/*.less')
        .pipe(less());
});

and when I run it I get:

(dev) c:\work\dev\dkjs>gulp dktest-less
[16:07:46] Using gulpfile c:\work\dev\dkjs\gulpfile.js
[16:07:46] Starting 'dktest-less'...
[16:07:46] Finished 'dktest-less' after 4.22 ms

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: Invalid HEX color code
    at error (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:248:17)
    at Object.Parser.parser.parsers.parsers.entities.color (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:966:29)
    at Object.Parser.parser.parsers.parsers.operand (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:1984:34)
    at Object.Parser.parser.parsers.parsers.multiplication (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:1882:26)

    at Object.Parser.parser.parsers.parsers.addition (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:1911:26)
    at Object.Parser.parser.parsers.parsers.expression (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:2006:30)
    at Object.Parser.parser.parsers.parsers.value (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:1851:30)
    at Object.Parser.parser.parsers.parsers.rule (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:1575:60)
    at Object.Parser.parser.parsers.parsers.primary (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:731:76)
    at Object.Parser.parser.parsers.parsers.block (c:\work\dev\dkjs\node_modules\gulp-less\node_modules\less\lib\less\parser.js:1492:51)

which isn't very useful (how do you search for an invalid hex value..? ..and where?)

If I run lessc manually it gives me:

(dev) c:\work\dev\dkjs\dktest>lessc diffview.less
SyntaxError: Invalid HEX color code in c:\work\dev\dkjs\dktest\diffview.less on line 821, column 48:
820
821     .white .beautify .data em.s16 { color: #880s }
822

What do I need to do to get this wonderfully informative error message through gulp?


Solution

  • Try adding an error handler function to your code like this:

    var gulp = require('gulp'),
        less = require('gulp-less');
    
    gulp.task('dktest-less', function () {
        gulp.src('dktest/**/*.less')
            .pipe(less().on('error', errorHandler));
    });
    
    function errorHandler (error) {
      console.log(error.toString());
      this.emit('end');
    }