gulp-sourcemaps не включает содержимое при использовании gulp-less и gulp-minify-css
У меня есть Gulp Taks, как это:
var gulp = require('gulp');
var less = require('gulp-less');
var minifyCss = require('gulp-minify-css');
var sourcemaps = require('gulp-sourcemaps');
gulp.task('less', function() {
return gulp.src('./less/*.less')
.pipe(sourcemaps.init())
.pipe(less())
.pipe(minifyCss())
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./assets/css'));
});
Файл.css создается так же, как и исходный файл карты. Однако исходная карта не имеет содержимого ("sourcesContent": [null,null,...,null]), что должно иметь место, поскольку плагин sourcemaps по умолчанию говорит, что он будет включать содержимое (я также пытался явно установка includeContent в true).
Когда я удаляю шаг минификации, он работает хорошо, и я вижу содержимое исходных файлов поменьше, поэтому я проверил, поддерживает ли minify-css исходные карты и согласно списку плагинов.
Я делаю что-то неправильно? Есть ли известная несовместимость между less и minify-css при генерации исходных карт?
1 ответ
Sourecemaps довольно молоды в minifyCSS, и впоследствии gulp-minify-css
и, кажется, все еще глючит в некоторой степени. Я не нашел этот конкретный случай в трекере ошибок, но наткнулся на похожие проблемы при использовании Sass.
Я нашел обходной путь, используя аналогичный плагин на основе PostCSS. Это не так элегантно, как другие, но все же лучше, чем включение плагина CSSClean в LESS;-)
var less = require('gulp-less');
var sourcemaps = require('gulp-sourcemaps');
var postcss = require('gulp-postcss');
var csswring = require('csswring');
gulp.task('less', function() {
return gulp.src('./bower_components/bootstrap/less/bootstrap.less')
.pipe(sourcemaps.init())
.pipe(less())
.pipe(postcss([csswring]))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('./assets/css'));
});
альтернативно, вы можете вызывать minifyCSS только для производственного режима, Sourcemaps только для режима DEV, если ваша настройка это позволяет.
Надеюсь, это поможет!