Skip to content

Instantly share code, notes, and snippets.

@robdecker
Last active November 2, 2019 01:45
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robdecker/1d10b64c5e936de754af to your computer and use it in GitHub Desktop.
Save robdecker/1d10b64c5e936de754af to your computer and use it in GitHub Desktop.
[Current Gulp setup] #gulp
'use strict';
// Include Gulp
var gulp = require('gulp'),
// Include Plug-ins
changed = require('gulp-changed'),
concat = require('gulp-concat'),
globbing = require('gulp-css-globbing'),
imagemin = require('gulp-imagemin'),
jshint = require('gulp-jshint'),
livereload = require('gulp-livereload'),
minifyCSS = require('gulp-minify-css'),
notify = require('gulp-notify'),
plumber = require('gulp-plumber'),
prefix = require('gulp-autoprefixer'),
rename = require('gulp-rename'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
stripDebug = require('gulp-strip-debug'),
stylish = require('jshint-stylish'),
uglify = require('gulp-uglify'),
util = require('gulp-util'),
watch = require('gulp-watch');
////////////////////////////////////////////////////////////////////////////////
// Javascript
////////////////////////////////////////////////////////////////////////////////
// JS hint
gulp.task('lint', function() {
return gulp.src([
'js/theme/**.*.js'
])
.pipe(jshint())
.pipe(jshint.reporter(stylish));
});
// Vendor scripts
gulp.task('vendor-scripts', function() {
return gulp.src([
'js/vendor/**/*.js'
])
.pipe(concat('vendor.js'))
.pipe(gulp.dest('../js'));
});
// Theme scripts
gulp.task('theme-scripts', ['lint'], function() {
return gulp.src([
'js/theme/**/*.js'
])
.pipe(concat('theme.js'))
.pipe(gulp.dest('../js'));
});
// Production-ify scripts
gulp.task('scripts', ['vendor-scripts', 'theme-scripts'], function() {
return gulp.src([
'../js/vendor.js',
'../js/theme.js'
])
.pipe(concat('all.min.js'))
.pipe(stripDebug())
.pipe(uglify())
.pipe(gulp.dest('../js'));
});
////////////////////////////////////////////////////////////////////////////////
// Sass
////////////////////////////////////////////////////////////////////////////////
// Sass files
gulp.task('sass', function() {
var onError = function(err) {
notify.onError({
title: "Gulp",
subtitle: "Failure!",
message: "Error: <%= error.message %>",
sound: "Beep"
})(err);
this.emit('end');
};
return gulp.src([
'sass/*.scss'
])
.pipe(plumber({ errorHandler: onError }))
.pipe(globbing({
extensions: ['.scss']
}))
.pipe(sourcemaps.init())
.pipe(globbing())
.pipe(sass())
.pipe(sourcemaps.write())
.pipe(prefix('last 2 versions', '> 1%', 'ie 8'))
.pipe(gulp.dest('../css'))
.pipe(minifyCSS())
.pipe(rename({ suffix: '.min' }))
.pipe(gulp.dest('../css'));
});
////////////////////////////////////////////////////////////////////////////////
// Images
////////////////////////////////////////////////////////////////////////////////
// Minify images
gulp.task('imagemin', function() {
return gulp.src([
'images/**/*'
])
.pipe(changed('../images'))
.pipe(imagemin())
.pipe(gulp.dest('../images'));
});
////////////////////////////////////////////////////////////////////////////////
// Icons font
//
// Only run this task when the Icons font has been updated
////////////////////////////////////////////////////////////////////////////////
// Copy icons font files
gulp.task('iconsfont', function() {
gulp.src('fonts/icons/fonts/*.*')
.pipe(gulp.dest('../fonts'));
gulp.src('fonts/icons/sass/*.*')
.pipe(gulp.dest('sass/base'));
});
////////////////////////////////////////////////////////////////////////////////
// Default task
////////////////////////////////////////////////////////////////////////////////
gulp.task('default', ['scripts', 'sass', 'imagemin'], function() {
gulp.watch('js/**/*', ['scripts']);
gulp.watch('sass/**/*', ['sass']);
gulp.watch('images/**/*', ['imagemin']);
});
////////////////////////////////////////////////////////////////////////////////
// Live reload task
////////////////////////////////////////////////////////////////////////////////
gulp.task('lr', ['default'], function() {
livereload.listen();
gulp.watch('../css/style.css').on('change', livereload.changed);
});
{
"name": "theme",
"version": "1.0.0",
"dependencies": {},
"devDependencies": {
"gulp": "^3.9.0",
"gulp-autoprefixer": "^2.3.1",
"gulp-bower": "0.0.10",
"gulp-changed": "^1.2.1",
"gulp-concat": "^2.6.0",
"gulp-css-globbing": "^0.1.8",
"gulp-imagemin": "^2.3.0",
"gulp-jshint": "^1.11.1",
"gulp-livereload": "^3.8.0",
"gulp-minify-css": "^1.2.0",
"gulp-notify": "^2.2.0",
"gulp-plumber": "^1.0.1",
"gulp-rename": "^1.2.2",
"gulp-sass": "^2.0.3",
"gulp-sourcemaps": "^1.5.2",
"gulp-strip-debug": "^1.0.2",
"gulp-uglify": "^1.2.0",
"gulp-util": "^3.0.6",
"gulp-watch": "^4.2.4",
"jshint-stylish": "^2.0.1"
},
"engines": {
"node": ">=0.8.0"
},
"scripts": {
"postinstall": "find node_modules/ -name '*.info' -type f -delete"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment