Getting a strange error using a basic gulp/express build watch.
Directory Layout
project/
- sass/
- style.scss
- gulpfile.js
- index.html
Gulpfile.js
var gulp = require('gulp'),
sass = require('gulp-ruby-sass'),
autoprefixer = require('gulp-autoprefixer'),
minifycss = require('gulp-minify-css'),
rename = require('gulp-rename');
gulp.task('express', function() {
var express = require('express');
var app = express();
app.use(require('connect-livereload')({port: 4002}));
app.use(express.static(__dirname));
app.listen(4000);
});
var tinylr;
gulp.task('livereload', function() {
tinylr = require('tiny-lr')();
tinylr.listen(4002);
});
function notifyLiveReload(event) {
var fileName = require('path').relative(__dirname, event.path);
tinylr.changed({
body: {
files: [fileName]
}
});
}
gulp.task('styles', function() {
return gulp.src('sass/*.scss')
.pipe(sass({ style: 'expanded', sourcemap: false }))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1'))
.pipe(gulp.dest('css'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('css'));
});
gulp.task('watch', function() {
gulp.watch('sass/*.scss', ['styles']);
gulp.watch('*.html', notifyLiveReload);
gulp.watch('css/*.css', notifyLiveReload);
});
gulp.task('default', ['styles', 'express', 'livereload', 'watch'], function() {
});
Style.scss
body { position: relative; }
The express server/livereload works fine, but when it tries to compile the stylesheet I'm getting this error (even with sourcemap: false
)
gulp-ruby-sass: write style.css.map
events.js:72
throw er; // Unhandled 'error' event
^
Error: <LOCAL_PATH_HERE>/style.css.map:3:1: Unknown word
I fixed this problem keeping the source maps and using gulp-filter:
I was having the same issue with the gulp-ruby-sass plugin. I found this blog post which explains that there are a couple of bugs in the gulp-ruby-sass plugin regarding source maps. They have both been closed a little over a week ago. If you upgrade to gulp-ruby-sass~1.0.0-alpha this should fix the issues your having with source maps.
If that doesn't work the article I linked to above shows how to use the gulp-sass plugin which which doesn't have the source map issue.
Disabling sourcemaps is some kind of mystery right now. You have to do it like this
Source
Try upgrading to gulp-ruby-sass 1.0.0-alpha. It uses gulp-sourcemaps and should avoid all iterations of this problem.
Not entirely sure why this fixes it, but changing the autoprefixer pipe to:
and putting it before the sass pipe (top) allows it to build succesfully.