У меня есть эта настройка gulp
require('es6-promise').polyfill();
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var mmq = require('gulp-merge-media-queries');
var prefix = require('gulp-autoprefixer');
var sassOptions = {
errLogToConsole: true,
outputStyle: 'expanded'
};
var autoPrefixerOptions = {
browsers: ['last 2 version', '> 1%', 'ie 9']
};
gulp.task('sass', function() {
gulp.src('./scss/**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass(sassOptions).on('error', sass.logError))
.pipe(mmq())
.pipe(prefix(autoPrefixerOptions))
.pipe(sourcemaps.write('../maps', {includeContent: false, sourceRoot: '../../ui-dev/scss'}))
.pipe(gulp.dest('../Content/v2.0'));
});
gulp.task('watch', function() {
gulp.watch('./scss/**/*.scss', ['sass']);
});
gulp.task('default', ['sass', 'watch']);
моя структура выглядит следующим образом
|-Content
|-maps
|-v2.0
|-- compiled css files here
|-dev
|-gulpfile.js
|-scss
|-.scss files
все строится, как и ожидалось, за исключением того, что все мои файлы .map ссылаются на .css в каталоге Content/v2.0, а не на файлы .scss в папке dev.
Я понимаю, что исходное сопоставление должно указывать на номер строки в исходном файле (будучи scss) для упрощения отладки.
Как это исправить или я что-то упускаю?
ОБНОВИТЬ
Итак, я понял, что мне не хватает sourceRoute, но поскольку мой sass разбит на сотни файлов в каталогах на пару уровней в глубину, браузеры по-прежнему не подхватывают карты, потому что путь гласит: «../../ui-dev/ scss" на всех картах.
Как я могу получить правильный путь для каждого исходного файла?