You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

60 lines
1.5 KiB

var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');
var mqpacker = require('css-mqpacker');
var config = require('../config');
var processors = [
autoprefixer({
browsers: ['last 4 versions'],
cascade: false
}),
mqpacker({
sort: sortMediaQueries
})
];
gulp.task('sass', function() {
return gulp
.src(config.src.sass + '/*.{sass,scss}')
.pipe(sourcemaps.init())
.pipe(sass({
outputStyle: config.production ? 'compact' : 'expanded', // nested, expanded, compact, compressed
precision: 5
}))
.on('error', config.errorHandler)
.pipe(postcss(processors))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(config.dest.css));
});
gulp.task('sass:watch', function() {
gulp.watch(config.src.sass + '/**/*.{sass,scss}', ['sass']);
});
function isMax(mq) {
return /max-width/.test(mq);
}
function isMin(mq) {
return /min-width/.test(mq);
}
function sortMediaQueries(a, b) {
A = a.replace(/\D/g, '');
B = b.replace(/\D/g, '');
if (isMax(a) && isMax(b)) {
return B - A;
} else if (isMin(a) && isMin(b)) {
return A - B;
} else if (isMax(a) && isMin(b)) {
return 1;
} else if (isMin(a) && isMax(b)) {
return -1;
}
return 1;
}