Skip to content

Instantly share code, notes, and snippets.

@Ehesp
Created April 24, 2015 12:04
Show Gist options
  • Save Ehesp/6856c89655d6ef0dbd46 to your computer and use it in GitHub Desktop.
Save Ehesp/6856c89655d6ef0dbd46 to your computer and use it in GitHub Desktop.
Project quick start
var gulp = require('gulp'),
gulpif = require('gulp-if'),
clean = require('gulp-clean'),
concat = require('gulp-concat'),
autoprefixer = require('gulp-autoprefixer'),
flatten = require('gulp-flatten'),
usemin = require('gulp-usemin'),
jade = require('gulp-jade'),
minifyCss = require('gulp-minify-css'),
uglify = require('gulp-uglify'),
rev = require('gulp-rev'),
less = require('gulp-less'),
sass = require('gulp-sass'),
del = require('del'),
runSequence = require('run-sequence'),
argv = require('yargs').argv,
production = !!(argv.production);
/**
* usemin
* Build the index file - only minify in production
*/
gulp.task('usemin', function () {
return gulp.src('./src/index.html')
.pipe(gulpif(production, usemin({
css: [minifyCss(), 'concat', rev()],
js1: [uglify(), rev()],
js2: [uglify(), rev()]
})))
.pipe(gulpif(!production, usemin({
css: ['concat'],
js1: ['concat'],
js2: ['concat']
})))
.pipe(gulp.dest('./dist'));
});
/**
* styles
* Compile SASS with autoprofixing support
*/
gulp.task('styles', function() {
return gulp.src('src/sass/app.scss')
.pipe(sass())
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'ios 7', 'ios 8', 'android 4', 'android 5'))
.pipe(gulp.dest('./build/styles'));
});
/**
* templates
* Compile Jade templates into HTML
*/
gulp.task('templates', function() {
gulp.src('./src/jade/**/*.jade')
.pipe(jade({
locals: {}
}))
.pipe(gulp.dest('./dist/templates'));
});
/**
* fonts
* Compile Jade templates into HTML
*/
gulp.task('fonts', function() {
gulp.src([
'./build/components/mdi/fonts/**/*.{ttf*,woff*,eof*,svg*}',
'./src/fonts/**/*.{ttf*,woff*,eof*,svg*}',
])
.pipe(flatten())
.pipe(gulp.dest('./dist/fonts'));
});
/**
* scripts
* Combine JavaScript files
*/
gulp.task('scripts', function() {
return gulp.src(['./src/angular/module.js', './src/angular/**/*.js'])
.pipe(concat('all.js'))
.pipe(gulp.dest('./build/scripts'));
});
gulp.task('images', function() {
return gulp.src(['./src/img/**/*.*'])
.pipe(gulp.dest('./dist/img'));
});
/**
* clean
* Clean out the dist directory
*/
gulp.task('clean', function() {
return gulp.src('./dist')
.pipe(clean({force: true}));
});
/**
* watch
* Watch files, and run tasks if changes are made
*/
gulp.task('watch', function() {
gulp.watch(['./src/index.html', './src/jade/**/*.jade'], function() {
runSequence('templates', 'usemin');
});
gulp.watch('./src/angular/**/*.js', function() {
runSequence('scripts', 'usemin');
});
gulp.watch('./src/less/**/*.less', function() {
runSequence('styles', 'usemin');
});
});
/**
* build
* Takes a --production flag
*/
gulp.task('build', function() {
runSequence(
'clean',
['styles', 'scripts', 'templates', 'fonts', 'images'],
'usemin'
);
});
{
"name": "name",
"version": "0.1.0",
"description": "description",
"author": "author",
"dependencies": {
"body-parser": "^1.12.3",
"express": "^4.12.3",
"http-proxy": "^1.10.0"
},
"devDependencies": {
"del": "^1.1.1",
"gulp": "^3.8.11",
"gulp-autoprefixer": "^2.1.0",
"gulp-clean": "^0.3.1",
"gulp-concat": "^2.5.2",
"gulp-flatten": "0.0.4",
"gulp-if": "^1.2.5",
"gulp-jade": "^1.0.0",
"gulp-less": "^3.0.2",
"gulp-sass": "^1.3.3",
"gulp-minify-css": "^1.0.0",
"gulp-minify-html": "^1.0.1",
"gulp-rev": "^3.0.1",
"gulp-uglify": "^1.1.0",
"gulp-usemin": "^0.3.11",
"run-sequence": "^1.0.2",
"yargs": "^3.6.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment