2016-02-01 2 views
1

Я создал задачу Gulp, styles, которая создает уменьшенные и не уменьшенные CSS-файлы из файлов Sass. Я хотел бы также создать миниатюрные и неминифицированные Sourcemaps, однако это, похоже, не работает.Два Sass Sourcemaps в одном потоке Gulp

Вот код:

// Compile Sass, Autoprefix and minify 
gulp.task('styles', function() { 
    return gulp.src('./assets/scss/**/*.scss') 
    .pipe(plumber(function(error) { 
      gutil.log(gutil.colors.red(error.message)); 
      this.emit('end'); 
    })) 
    .pipe(sourcemaps.init()) // Start Sourcemaps 
    .pipe(sass()) 
    .pipe(autoprefixer({ 
      browsers: ['last 2 versions'], 
      cascade: false 
     })) 
    .pipe(sourcemaps.write('../maps'))  
    .pipe(gulp.dest('./assets/css/')) // Create sourcemap 
    .pipe(rename({suffix: '.min'})) 
    .pipe(cssnano()) 
    .pipe(sourcemaps.write('../maps')) // Create minified sourcemap 
    .pipe(gulp.dest('./assets/css/')) 
});  

В настоящее время, это выдает ошибку и не создает Минимизированный sourcemap. Однако, если я удалю один из экземпляров sourcemap.write, то он работает полностью нормально.

Возможно ли создать два источника в одном потоке?

+0

Почему вы хотите уменьшенным sourcemap? Разве это не побеждает цель минирования? – cimmanon

+0

Исходная карта не встроена в мини-файл - это отдельный файл. Это действительно полезно, чтобы видеть, откуда возникли мини-стили. – JeremyE

ответ

2

Как насчет реализации чего-то подобного?

https://github.com/ben-eb/gulp-cssnano/issues/21

Edit: Моя попытка по ссылке выше .. Я получил это работать без каких-либо ошибок.

// Grab our gulp packages 
var gulp = require('gulp'), 
    gutil = require('gulp-util'), 
    sass = require('gulp-sass'), 
    cssnano = require('gulp-cssnano'), 
    autoprefixer = require('gulp-autoprefixer'), 
    sourcemaps = require('gulp-sourcemaps'), 
    jshint = require('gulp-jshint'), 
    stylish = require('jshint-stylish'), 
    uglify = require('gulp-uglify'), 
    concat = require('gulp-concat'), 
    rename = require('gulp-rename'), 
    plumber = require('gulp-plumber'), 
    bower = require('gulp-bower'), 
    merge = require('merge-stream'), 
    clone = require('gulp-clone'), 
    browserSync = require('browser-sync').create(), 
    clip = require('gulp-clip-empty-files'); 

gulp.task('styles', function() { 
    var source = gulp.src('./assets/scss/**/*.scss') 
     .pipe(plumber(function(error) { 
      gutil.log(gutil.colors.red(error.message)); 
      this.emit('end'); 
    })) 
     .pipe(sass()) 
     .pipe(sourcemaps.init()) // Start Sourcemaps 
     .pipe(autoprefixer({ 
      browsers: ['last 2 versions'], 
      cascade: false 
    })); 

    var pipe1 = source.pipe(clone()) 
    .pipe(sourcemaps.write('../maps')) 
    .pipe(gulp.dest('./assets/css/')); // Create sourcemap 

    var pipe2 = source.pipe(clone()) 
    .pipe(rename({suffix: '.min'})) 
    .pipe(cssnano()) 
    .pipe(sourcemaps.write('../maps')) // Create minified sourcemap 
    .pipe(clip()) 
    .pipe(gulp.dest('./assets/css/')); 

    return merge(pipe1, pipe2); 
}); 

Если как cimmanon было предположить, что вы не можете иметь Минимизированную карту источника, просто удалите

.pipe(sourcemaps.write('../maps')) // Create minified sourcemap 

из

var pipe2 
+0

Хорошо, единственное, что оставляет меня в замешательстве, это то, что style.min.css.map больше, чем версия, не ограниченная ... Что это такое? – chuckn246

Смежные вопросы