sector-8.x-2.0-alpha4/themes/sector_starter/gulpfile.js
themes/sector_starter/gulpfile.js
/**
* @file Gulpfile that contains tasks for compiling the theme.
*/
/* Delcare a basePaths and paths object.
* This enables us to group and use paths as variables.
*/
const log = console.log;
let environment = 'prod'; // default to prod
const gulp = require('gulp'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
globbing = require('gulp-sass-glob'),
gulpif = require('gulp-if'),
rename = require("gulp-rename"),
svg = {
sprite : require('gulp-svg-sprite')
};
const config = {
paths : {
images : {
src : '.images/',
dest : './images/'
},
sprite : {
src : './build/sprite/',
svg : '../../images/sprite.svg',
mixins : {
src : './build/sass/_mixins.scss',
filename : '_sprite-mixins.scss',
dist : './scss/generic'
},
dist : '_sprite.scss', // contains generated $icons variable
template : './build/tpl/sprite-template.scss'
},
styles : {
css : './css/',
sass : './scss/'
}
},
sass : {
dev : {
outputStyle : 'expanded',
sourceMaps : true,
},
prod : {
outputStyle : 'compressed',
sourceMaps : false
},
includePaths : ['node_modules']
},
svg : {
sprite : {
padding : 5,
layout : 'diagonal',
bust : false,
mapname : 'icons'
}
}
};
/**
* Gulp svgSprite task.
*/
gulp.task('svgSprite', () => {
return gulp.src(`${config.paths.sprite.src}*`)
.pipe(svg.sprite({
shape: {
spacing: {
padding: config.svg.sprite.padding
}
},
mode: {
css: {
dest: "./",
layout: config.svg.sprite.layout,
sprite : config.paths.sprite.svg,
bust: config.svg.sprite.bust,
render: {
scss: {
dest: '_sprite.scss',
template: config.paths.sprite.template // ./build/tpl/sprite-template.scss
}
}
}
},
variables: {
mapname: config.svg.sprite.mapname
}
}))
.pipe(gulp.dest(`${config.paths.styles.sass}generic`));
});
/**
* Gulp copySpriteMixins task.
*
* In order to use our generated sprite, we require the sprite() mixin (and it's various mixin dependencies)
* available to call in our theme, so we copy it over to scss/generic and rename the file to something less
* generic than just _mixins.scss
*/
gulp.task('copySpriteMixins', () => {
log(`Copying ${config.paths.sprite.mixins.src} to ${config.paths.sprite.dist} ...`);
return gulp.src(config.paths.sprite.mixins.src)
.pipe(rename(config.paths.sprite.mixins.filename))
.pipe(gulp.dest(config.paths.sprite.mixins.dist));
});
gulp.task('default', () => {
var param, i = process.argv.indexOf("--env");
environment = i>-1 ? process.argv[i+1] : environment;
let sass_config = config.sass[environment];
sass_config.includePaths = config.sass.includePaths;
return gulp.src('scss/**/*.s+(a|c)ss')
// Initialize the source maps.
.pipe(gulpif(sass_config.sourceMaps, sourcemaps.init()))
// Enable globbing and configure it to look for SCSS files.
.pipe(globbing())
// Compile the SASS
.pipe(sass(sass_config).on('error', sass.logError))
// Write sourcemaps into the CSS file.
.pipe(gulpif(sass_config.sourceMaps, sourcemaps.write()))
// Send output through vinyl-fs to play nice with ownership.
.pipe(gulp.dest('./css'));
});
