Skip to content

Instantly share code, notes, and snippets.

@mupkoo
Last active September 29, 2015 13:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mupkoo/9d3726a189a3851b9f99 to your computer and use it in GitHub Desktop.
Save mupkoo/9d3726a189a3851b9f99 to your computer and use it in GitHub Desktop.
Gulp task for a static websites
var gulp = require('gulp');
var connect = require('gulp-connect');
var del = require('del');
var sourcemaps = require('gulp-sourcemaps');
var sass = require('gulp-sass');
var autoprefixer = require('gulp-autoprefixer');
var uncss = require('gulp-uncss');
var nano = require('gulp-cssnano');
var htmlmin = require('gulp-html-minifier');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
gulp.task('styles:dev', function () {
return gulp.src('app/styles/app.scss', { base: 'app' })
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write({
includeContent: false,
sourceRoot: '/styles'
}))
.pipe(gulp.dest('tmp'))
.pipe(connect.reload());
});
gulp.task('reload:html', function () {
return gulp.src('app/**/*.html')
.pipe(connect.reload());
});
gulp.task('reload:images', function () {
return gulp.src('app/images/**/*')
.pipe(connect.reload());
});
gulp.task('clean:dist', function () {
return del([
'dist/styles/*',
'dist/images/*'
]);
});
gulp.task('styles:dist', ['clean:dist'], function () {
return gulp.src('app/styles/app.scss', { base: 'app' })
.pipe(sass())
.pipe(autoprefixer())
.pipe(uncss({
html: ['app/index.html']
}))
.pipe(nano())
.pipe(rev())
.pipe(gulp.dest('dist'))
.pipe(rev.manifest('dist/rev-minifest.json', {
base: process.cwd() + '/dist',
merge: true
}))
.pipe(gulp.dest('dist'));
});
gulp.task('images:dist', ['clean:dist'], function () {
return gulp.src('app/images/**/*', { base: 'app' })
.pipe(rev())
.pipe(gulp.dest('dist'))
.pipe(rev.manifest('dist/rev-minifest.json', {
base: process.cwd() + '/dist',
merge: true
}))
.pipe(gulp.dest('dist'));
});
gulp.task('html:dist', ['styles:dist', 'images:dist'], function () {
var manifest = gulp.src('dist/rev-minifest.json');
return gulp.src('app/*.html')
.pipe(revReplace({ manifest: manifest }))
.pipe(htmlmin({ collapseWhitespace: true }))
.pipe(gulp.dest('dist'));
});
gulp.task('watch', function () {
gulp.watch('app/styles/**/*.scss', ['styles:dev']);
gulp.watch('app/**/*.html', ['reload:html']);
gulp.watch('app/images/**/*', ['reload:images']);
});
gulp.task('build', ['clean:dist', 'styles:dist', 'images:dist', 'html:dist']);
gulp.task('serve', ['watch', 'styles:dev'], function () {
connect.server({
root: ['app', 'tmp'],
livereload: true
});
});
gulp.task('default', ['serve']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment