Здравствуйте! Есть функция пост обработки css файла и карты исходных кодов (sourcemap), задача - изменить url всех файлов в css и не испортить карту, для этого как я понял, нужен
vinyl-sourcemaps-apply и
rework +
rework-url. Итак, что я делаю:
gulp.src('./source/css/**/*.css')
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(concat('main.css'))
.pipe(autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}))
.pipe(antiCache(fileHashes))
.pipe(sourcemaps.write())
.pipe(gulp.dest('./css/'));
, где fileHashes представляет из себя объект с содержимым вида
"path/to/image.png":"a9ecbba8ef"
. Функция antiCache не должна ничего испортить, только изменить урлы:
function antiCache(fileHashes) {
return through.obj(function (file, enc, cb) {
var css = file.contents.toString();
css = rework(css)
.use(reworkUrl(function (url) {
if (fileHashes.hasOwnProperty(path.basename(url))) {
return url + '?' + fileHashes[path.basename(url)];
}
return url;
})).toString();
file.contents = new Buffer(css);
this.push(file);
});
}
На
странице плагина vinyil-sourcemaps-apply есть пример как применить к измененному файлу карту исходников. На этом шаге ступор. Помогите пожалуйста.