@fantassin/bzk
Version:
Build modern web with Sass, ESNext & WordPress workflow.
54 lines (48 loc) • 1.6 kB
JavaScript
/*
* @title Sass
* @description Compile your Sass !
*/
// Dependencies
const gulp = require('gulp');
const gulpIf = require('gulp-if');
const sourcemaps = require('gulp-sourcemaps');
const sass = require('gulp-sass');
const sassTilde = require('node-sass-tilde-importer')
const postcss = require('gulp-postcss');
const postcssNormalize = require('postcss-normalize');
const postcssPresetEnv = require('postcss-preset-env');
const cssNano = require('cssnano');
const browserSync = require('browser-sync');
const dotenv = require('dotenv');
const isProd = require('../gulpfile').isProd;
// Config
dotenv.config();
// Consts
const SASS_SRC = process.env.SASS_SRC ? process.env.SASS_SRC : `${process.env.SRC}/**/*.scss`;
const SASS_DEST = process.env.SASS_DEST ? process.env.SASS_DEST : process.env.DEST;
// Task
function compileSass() {
return gulp.src(SASS_SRC, {sourcemaps: isProd})
.pipe(gulpIf(isProd, sourcemaps.init()))
.pipe(sass({
includePaths: [
'node_modules'
],
importer: sassTilde
}))
.pipe(postcss([
postcssNormalize(), // Add css normalizer by default
postcssPresetEnv({ // Enable future CSS features
stage: 2,
browsers: ['last 3 versions'],
autoprefixer: {grid: true} // Add vendor prefix to CSS rules by Can I Use and also grid
}),
cssNano() // Minify CSS
]))
.pipe(gulpIf(isProd, sourcemaps.write()))
.pipe(gulp.dest(SASS_DEST))
.pipe(browserSync.stream());
}
exports.compileSass = gulp.series(compileSass);
exports.SASS_SRC = SASS_SRC;
exports.SASS_DEST = SASS_DEST;