Skip to content

Instantly share code, notes, and snippets.

@1stevengrant
Created March 19, 2015 12:41
Show Gist options
  • Save 1stevengrant/3048e926968ab7e128e3 to your computer and use it in GitHub Desktop.
Save 1stevengrant/3048e926968ab7e128e3 to your computer and use it in GitHub Desktop.
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