我最近开始使用Gulp
,因为我更喜欢Grunt
以上的语法,虽然我喜欢它,但在使用Chrome
或任何浏览器时我注意到了大部分内容在查看检查器时,它告诉我不正确的线路映射。
它总是告诉我正确的文件,但它错误地告诉我行它已经开启。
我发现它似乎与Sass
嵌套有问题;因为它给我的行号是第一个父母开始的行,所以例如在下面的代码中:
#foo {
.bar {
}
}
如果我正在尝试检查具有bar
类的元素,它会告诉我它在1
而不是3
。
这是我的gulpfile.js
文件:
var gulp = require('gulp');
var concat = require('gulp-concat');
var plumber = require('gulp-plumber');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var autoprefixer = require('gulp-autoprefixer');
gulp.task('scripts', function() {
gulp.src([
'js_dev/jquery.js',
'js_dev/plugins/*.js',
// We have to set the bootstrap lines separately as some need to go before others
'js_dev/bootstrap/alert.js',
'js_dev/bootstrap/collapse.js',
'js_dev/bootstrap/modal.js',
'js_dev/bootstrap/tooltip.js',
'js_dev/bootstrap/popover.js',
'js_dev/bootstrap/tab.js',
'js_dev/bootstrap/transition.js',
'js_dev/scripts.js'
])
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(concat('scripts.js'))
.pipe(sourcemaps.write('../maps'))
.pipe(gulp.dest('./js'))
});
gulp.task('styles', function() {
gulp.src('scss/**/*.scss')
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(autoprefixer({
browsers: [
'last 4 Chrome versions',
'last 4 Firefox versions',
'last 4 Edge versions',
'last 2 Safari versions',
'ie >= 10',
'> 1.49%',
'not ie <= 9'
],
cascade: false
}))
.pipe(sourcemaps.write('../maps'))
.pipe(gulp.dest('./css'));
});
gulp.task('watch', function() {
gulp.watch(['scss/**/*.scss', 'js_dev/**/*.js'], ['scripts', 'styles']);
});
gulp.task('default', ['scripts', 'styles']);
答案 0 :(得分:0)
奇怪的问题是gulp-sourcempas
之间有多个插件导致了这个问题。这是错误,目前我能够解决的是暂时删除额外的插件。这是最有可能工作的代码
gulp.task('styles', function() {
gulp.src('scss/**/*.scss')
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write('../maps'))
.pipe(gulp.dest('./css'));
});
我知道这不是真正的解决方案,因为我们需要各种其他插件,但这可以显示正确的行号。您可以在github上观看此issue以监控此错误的进度。
答案 1 :(得分:0)
我从less和源映射写入之间注释掉了自动前缀,现在我的情况下它显示正确的行号。
gulp.src(['css/custom.less'])
.pipe(sourcemaps.init())
.pipe(less())
// .pipe(autoprefixer({
// cascade: false
// }))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('css/'));