The streaming build system
gulp is a toolkit that will help you automate painful or time-consuming tasks in your development workflow. For web development (if that's your thing) it can help you by doing CSS preprocessing, JS transpiling, minification, live reloading, and much more. Integrations are built into all major IDEs and people are loving gulp across PHP, .NET, Node.js, Java, and more. With over 1700 plugins (and plenty you can do without plugins), gulp lets you quit messing with build systems and get back to work.
For a Getting started guide, API docs, recipes, making a plugin, etc. see the documentation page!
This file will give you a taste of what gulp does.
vargulp=require('gulp');varcoffee=require('gulp-coffee');varconcat=require('gulp-concat');varuglify=require('gulp-uglify');varimagemin=require('gulp-imagemin');varsourcemaps=require('gulp-sourcemaps');vardel=require('del');varpaths={scripts: ['client/js/**/*.coffee','!client/external/**/*.coffee'],images: 'client/img/**/*'};// Not all tasks need to use streams// A gulpfile is just another node program and you can use any package available on npmgulp.task('clean',function(){// You can use multiple globbing patterns as you would with `gulp.src`returndel(['build']);});gulp.task('scripts',['clean'],function(){// Minify and copy all JavaScript (except vendor scripts)// with sourcemaps all the way downreturngulp.src(paths.scripts).pipe(sourcemaps.init()).pipe(coffee()).pipe(uglify()).pipe(concat('all.min.js')).pipe(sourcemaps.write()).pipe(gulp.dest('build/js'));});// Copy all static imagesgulp.task('images',['clean'],function(){returngulp.src(paths.images)// Pass in options to the task.pipe(imagemin({optimizationLevel: 5})).pipe(gulp.dest('build/img'));});// Rerun the task when a file changesgulp.task('watch',function(){gulp.watch(paths.scripts,['scripts']);gulp.watch(paths.images,['images']);});// The default task (called when you run `gulp` from cli)gulp.task('default',['watch','scripts','images']);We recommend these plugins:
- gulp-changed - only pass through changed files
- gulp-cached - in-memory file cache, not for operation on sets of files
- gulp-remember - pairs nicely with gulp-cached
- gulp-newer - pass through newer source files only, supports many:1 source:dest
Anyone can help make this project better - check out the Contributing guide!


