Skip to content

Instantly share code, notes, and snippets.

@boycgit
Created April 14, 2014 06:24
Show Gist options
  • Save boycgit/10621087 to your computer and use it in GitHub Desktop.
Save boycgit/10621087 to your computer and use it in GitHub Desktop.
a gulp config file template
/**
** inspired by markgdyr, http://markgoodyear.com/2014/01/getting-started-with-gulp/
* date:2014年4月14日
* creator:玄农
* mail:bocheng.zbc@alibaba-inc.com
**/
// Load the plugins
var gulp = require("gulp"),
less = require("gulp-less"),
path = require('path'),
autoprefixer = require('gulp-autoprefixer'),
minifycss = require('gulp-minify-css'),
coffee = require('gulp-coffee'),
jshint = require('gulp-jshint'),
stylish = require('jshint-stylish'),
uglify = require('gulp-uglify'),
imagemin = require('gulp-imagemin'),
rename = require('gulp-rename'),
clean = require('gulp-clean'),
concat = require('gulp-concat'),
notify = require('gulp-notify'),
cache = require('gulp-cache'),
livereload = require('gulp-livereload'),
lr = require('tiny-lr'),
server = lr();
// Compile the less files,Autoprefix and minify
gulp.task('styles', function () {
return gulp.src('src/less/**/*.less')
.pipe(less({
paths: [ path.join(__dirname, 'less', 'includes') ]
}))
.pipe(autoprefixer("> 1%", "last 2 version"))
.pipe(gulp.dest('dist/assets/css'))
.pipe(rename({suffix: '.min'}))
.pipe(minifycss())
.pipe(gulp.dest('dist/assets/css'))
.pipe(livereload(server))
.pipe(notify({ message: 'Styles task complete' }));
});
//Compile CoffeeScipt
gulp.task('coffee', function() {
return gulp.src('src/scripts/**/*.coffee')
.pipe(coffee({bare: false,sourceMap: true}).on('error', function(err) {
notify({ message: 'ERROR:coffee compile' })
}))
.pipe(gulp.dest('src/scripts'));
});
// JSHint, concat, and minify JavaScript
gulp.task('scripts', ['coffee'],function() {
return gulp.src('src/scripts/**/*.js')
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter(stylish))
.pipe(concat('main.js'))
.pipe(gulp.dest('dist/assets/js'))
.pipe(rename({suffix: '.min'}))
.pipe(uglify())
.pipe(gulp.dest('dist/assets/js'))
.pipe(livereload(server))
.pipe(notify({ message: 'Scripts task complete' }));
});
// Compress Images,cached
gulp.task('images', function() {
return gulp.src('src/images/**/*')
.pipe(cache(imagemin({ optimizationLevel: 5, progressive: true, interlaced: true })))
.pipe(gulp.dest('dist/assets/img'))
.pipe(livereload(server))
.pipe(notify({ message: 'Images task complete' }));
});
// Clean Up!
gulp.task('clean', function() {
return gulp.src(['dist/assets/css', 'dist/assets/js', 'dist/assets/img'], {read: false})
.pipe(clean());
});
// The default task
gulp.task('default', ['clean'], function() {
gulp.start('styles', 'scripts', 'images');
});
// Watch and livereload
gulp.task('watch', function() {
// Listen on port 35729
server.listen(35729, function (err) {
if (err) {
return console.log(err)
}});
// Watch .lesss files
gulp.watch('src/styles/**/*.scss', ['styles']);
// Watch .js files
gulp.watch('src/scripts/**/*.coffee', ['scripts']);
// Watch image files
gulp.watch('src/images/**/*', ['images']);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment