Created
March 19, 2015 12:41
-
-
Save 1stevengrant/3048e926968ab7e128e3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var gulp = require('gulp'), | |
gulpif = require('gulp-if'), | |
sprite = require('css-sprite').stream, | |
sass = require('gulp-sass'), | |
autoprefixer = require('gulp-autoprefixer'), | |
minifycss = require('gulp-minify-css'), | |
rename = require('gulp-rename'), | |
notify = require('gulp-notify'), | |
clean = require('gulp-clean'), | |
watch = require('gulp-watch'), | |
svgSprite = require('gulp-svg-sprite'), | |
plumber = require('gulp-plumber'), | |
path = require('path'), | |
concat = require('gulp-concat'), | |
uglify = require('gulp-uglify'), | |
sourcemaps = require('gulp-sourcemaps'), | |
browserSync = require('browser-sync'), | |
reload = browserSync.reload, | |
svgmin = require('svgmin'), | |
svgspritesheet = require('gulp-svg-spritesheet'), | |
gulpif = require('gulp-if'), | |
scsslint = require('gulp-scss-lint'), | |
fontcustom = require('fontcustom'); | |
var notifyInfo = { | |
title: 'Gulp', | |
icon: path.join(__dirname, 'gulp.png') | |
}; | |
//error notification settings for plumber | |
var plumberErrorHandler = { errorHandler: notify.onError({ | |
title: notifyInfo.title, | |
icon: notifyInfo.icon, | |
message: "Error: <%= error.message %>" | |
}) | |
}; | |
// JS plugins | |
gulp.task('plugins', function() { | |
return gulp.src('./src/js/plugins/*.js') | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(concat('plugins.js')) | |
.pipe(gulp.dest('./public/build/js')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(uglify()) | |
.pipe(gulp.dest('./public/build/js')); | |
}); | |
//scripts | |
gulp.task('scripts', function() { | |
return gulp.src('./src/js/*.js') | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(concat('site.js')) | |
.pipe(gulp.dest('./public/build/js')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(uglify()) | |
.pipe(gulp.dest('./public/build/js')); | |
}); | |
//scripts | |
gulp.task('jsbuild', function() { | |
return gulp.src(['./public/build/js/plugins.js', './public/build/js/site.js']) | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(concat('main.js')) | |
.pipe(gulp.dest('./public/build/js')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(uglify()) | |
.pipe(gulp.dest('./public/build/js')); | |
}); | |
var bsconfig = { | |
// 1. inform browser-sync to watch compiled *.css files instead of *.scss sass files | |
files: ["./public/build/css/**/*.css", "./craft/templates/**/*.twig"], | |
proxy: "tgcaus.craft.dev" | |
} | |
baseDir = './src/lib/svgsprite', // <-- Set to your SVG base directory | |
svgGlob = '**/*.svg', // <-- Glob to match your SVG files | |
outDir = './public/build', // <-- Main output directory | |
config = { | |
"mode": { | |
"view": { | |
"prefix": "tgc-%s", | |
"sprite": "../svg/sprite.view.svg", | |
"render": { | |
"scss": { | |
"dest": "../../../src/scss/_svgsprite.scss" | |
} | |
}, | |
"example": true | |
} | |
} | |
}; | |
gulp.task('svgsprite', function() { | |
return gulp.src(svgGlob, {cwd: baseDir}) | |
.pipe(plumber()) | |
.pipe(svgSprite(config)).on('error', function(error){ console.log(error); }) | |
.pipe(gulp.dest(outDir)) | |
}); | |
gulp.task('svgsprite', function() { | |
return gulp.src(svgGlob, {cwd: baseDir}) | |
.pipe(plumber()) | |
.pipe(svgSprite(config)).on('error', function(error){ console.log(error); }) | |
.pipe(gulp.dest(outDir)) | |
}); | |
// browser-sync task for starting the server. | |
gulp.task('browser-sync', function() { | |
browserSync(bsconfig) | |
}); | |
// Clean | |
gulp.task('clean', function() { | |
return gulp.src(['./public/build/css/'], {read: false}) | |
.pipe(clean()) | |
.pipe(notify({ | |
"message": "CSS cleaned", | |
"sound": "Glass", | |
})); | |
}); | |
gulp.task('sass', function() { | |
gulp.task('clean'); | |
return gulp.src(['./src/scss/**/*.scss']) | |
// .pipe(sourcemaps.init()) | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(sass()) | |
// .pipe(sourcemaps.write()) | |
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 7', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) | |
.pipe(gulp.dest('./public/build/css')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(minifycss()) | |
.pipe(gulp.dest('./public/build/css')) | |
.pipe(notify("Hey y'all, I just built the CSS")) | |
}); | |
// generate sprite.png and _sprite.scss | |
gulp.task('sprites', function () { | |
return gulp.src('src/lib/pngsprite/**/*.png') | |
.pipe(sprite({ | |
name: 'pngsprite', | |
style: '_pngsprite.scss', | |
cssPath: '../img', | |
processor: 'scss', | |
prefix: 'pngsprite', | |
retina: true, | |
margin: 5 | |
})) | |
.pipe(gulpif('*.png', gulp.dest('./public/build/img/'))) | |
.pipe(gulpif('*.scss', gulp.dest('./src/scss/'))); | |
}); | |
// generate scss with base64 encoded images | |
gulp.task('base64', function () { | |
return gulp.src('./src/img/*.png') | |
.pipe(sprite({ | |
base64: true, | |
style: '_base64.scss', | |
processor: 'scss' | |
})) | |
.pipe(gulp.dest('./src/scss/')); | |
}); | |
gulp.task('scss-lint', function() { | |
gulp.src('./src/scss/**/*.scss') | |
.pipe(scsslint({'config': './src/scss/scsslint.yml'})); | |
}); | |
// custom icons | |
gulp.task('icons', function() { | |
return fontcustom({ | |
"config": './fontcustom.yml', | |
"noisy": true | |
}); | |
}); | |
gulp.task('watch', function() { | |
gulp.watch('./src/scss/**/*.scss', ['sass']); | |
}); | |
// Default task to be run with `gulp` | |
gulp.task('default', ['sass','browser-sync'], function () { | |
gulp.watch("./src/scss/**/*.scss", ['sass']); | |
gulp.watch("./craft/templates/**/*.twig"); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment