Skip to content

Instantly share code, notes, and snippets.

@daraskolnick
Last active March 13, 2016 17:00
Show Gist options
  • Save daraskolnick/c5a463eb5490bf59a32d to your computer and use it in GitHub Desktop.
Save daraskolnick/c5a463eb5490bf59a32d to your computer and use it in GitHub Desktop.
Current gulpfile.js
// Include gulp
var gulp = require('gulp');
// Include plugins
var jshint = require('gulp-jshint'),
plumber = require('gulp-plumber'),
sass = require('gulp-sass'),
spritesmith = require('gulp.spritesmith'),
resize = require('gulp-image-resize'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
minifycss = require('gulp-minify-css'),
autoprefixer = require('gulp-autoprefixer'),
newer = require('gulp-newer'),
imagemin = require('gulp-imagemin'),
livereload = require('gulp-livereload'),
lr = require('tiny-lr'),
server = lr(),
runSequence = require('run-sequence');
// Minify JS
gulp.task('scripts', function() {
return gulp.src(['js/plugins.js', 'js/script.js'])
.pipe(concat('script.min.js'))
.pipe(uglify())
.pipe(gulp.dest('js'))
.pipe(livereload(server));
});
// Lint JS
gulp.task('lint', function() {
return gulp.src('js/script.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
// Compile Sass
gulp.task('sass', function() {
return gulp.src('style/style.scss')
.pipe(plumber())
.pipe(sass())
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'ios 6', 'android 4'))
.pipe(minifycss())
.pipe(gulp.dest(''))
.pipe(livereload(server));
});
// Create retina sprites
gulp.task('sprite', function () {
runSequence('sprite-1x', 'sprite-output');
});
gulp.task('sprite-1x', function () {
return gulp.src('img/sprite/*.png')
.pipe(resize({width:'50%', crop:false, upscale:false}))
.pipe(gulp.dest('img/sprite/1x/'));
});
gulp.task('sprite-output', function () {
var spriteData2x = gulp.src('img/sprite/*.png').pipe(spritesmith({
imgName: 'sprite@2x.png',
cssName: '_sprites.scss',
imgPath: 'img/sprite@2x.png',
algorithm:'binary-tree'
}));
spriteData2x.img
.pipe(imagemin())
.pipe(gulp.dest('img/'));
spriteData2x.css
.pipe(gulp.dest('style/partials/'));
var spriteData1x = gulp.src('img/sprite/1x/*.png').pipe(spritesmith({
imgName: 'sprite.png',
cssName: '_sprites.scss',
imgPath: 'img/sprite.png',
algorithm:'binary-tree'
}));
spriteData1x.img
.pipe(imagemin())
.pipe(gulp.dest('img/'));
});
// Compress images
gulp.task('images', function() {
var imgSrc = 'img/source/*';
var imgDest = 'img';
return gulp.src(imgSrc)
.pipe(newer(imgDest))
.pipe(imagemin())
.pipe(gulp.dest(imgDest))
.pipe(livereload(server));
});
// Load PHP changes
gulp.task('php', function(){
gulp.src('*.php')
.pipe(livereload(server));
});
// Watch Files For Changes
gulp.task('watch', function() {
// Listen on port 35729
server.listen(35729, function (err) {
if (err) {
return console.log(err)
};
gulp.watch('js/*.js', ['lint', 'scripts']);
gulp.watch('**/*.scss', ['sass']);
gulp.watch('*.php', ['php']);
gulp.watch('img/source/*', ['images']);
gulp.watch('img/sprite/*', ['sprite']);
});
});
// Default Task
gulp.task('default', ['lint', 'sass', 'scripts', 'watch']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment