apptension-tools
Version:
Common tools used in Apptension's projects
47 lines (37 loc) • 1.6 kB
JavaScript
var gulp = require('gulp');
var path = require('path');
var merge = require('merge-stream');
var spritesmith = require('gulp.spritesmith');
var imagemin = require('gulp-imagemin');
var pngquant = require('imagemin-pngquant');
var buffer = require('vinyl-buffer');
var env = require('./utils/env');
var config = require('./config');
module.exports = function () {
var pathsConfig = config.getPathsConfig();
var imagesDest = pathsConfig.paths.tmp;
var styleDest = pathsConfig.paths.tmp;
imagesDest = path.join(imagesDest, pathsConfig.dirNames.images, pathsConfig.dirNames.sprites);
var spriteData = gulp.src(path.join(pathsConfig.paths.sprites, pathsConfig.filePatterns.sprites))
.pipe(spritesmith({
imgName: 'sprite.png',
retinaImgName: 'sprite-retina.png',
retinaSrcFilter: path.join(pathsConfig.paths.sprites, pathsConfig.filePatterns.retinaSprites),
cssName: 'sprites.scss',
imgPath: '/' + pathsConfig.dirNames.images + '/' + pathsConfig.dirNames.sprites + '/sprite.png',
retinaImgPath: '/' + pathsConfig.dirNames.images + '/' + pathsConfig.dirNames.sprites + '/sprite-retina.png'
}));
// Pipe image stream through image optimizer and onto disk
var imgStream = spriteData.img
.pipe(buffer())
.pipe(imagemin({
progressive: true,
use: [pngquant()]
}))
.pipe(gulp.dest(imagesDest));
// Pipe CSS stream through CSS optimizer and onto disk
var cssStream = spriteData.css
.pipe(gulp.dest(styleDest));
// Return a merged stream to handle both `end` events
return merge(imgStream, cssStream);
};