Skip to content

Instantly share code, notes, and snippets.

@stianwestvig
Created March 18, 2015 12:54
Show Gist options
  • Save stianwestvig/adbfa06eefc50d026ddc to your computer and use it in GitHub Desktop.
Save stianwestvig/adbfa06eefc50d026ddc to your computer and use it in GitHub Desktop.
var gulp = require('gulp');
var jade = require('gulp-jade');
var sass = require('gulp-sass');
var browserify = require('browserify');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var source = require('vinyl-source-stream');
var plumber = require('gulp-plumber');
var prefix = require('gulp-autoprefixer');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var imagemin = require('gulp-imagemin');
var livereload = require('gulp-livereload');
var modernizr = require('gulp-modernizr');
var deployd = require('deployd'),
options = {
port: 3000,
env : "development"
};
var dpd = deployd(options);
// Paths
var paths = {
templates: ['src/templates/*.jade'],
scss: ['src/scss/*.scss'],
scripts: ['src/js/**/*.js'],
mainScript: ['./src/js/main'],
images: ['src/img/*'],
fonts: ['src/fonts/**'],
dist: ['public']
};
// Deployd
gulp.task('deployd', function () {
dpd.listen();
dpd.on('listening', function() {
console.log("Server is listening.");
});
dpd.on('error', function(err) {
console.error('Server dead.',err);
process.nextTick(function() {
process.exit();
});
});
});
// Jade to HTML
gulp.task('jade', function() {
gulp.src(paths.templates)
.pipe(plumber())
.pipe(jade({
pretty: true
}))
.pipe(gulp.dest('public'));
});
// Compile Sass
gulp.task('sass', function() {
gulp.src(['src/scss/*.scss', '!src/scss/_variables.scss'])
.pipe(plumber())
.pipe(sass({
includePaths: ['src/scss', 'bower_components/foundation/scss'],
outputStyle: 'expanded'
}))
.pipe(prefix(
"last 1 version", "> 1%", "ie 8", "ie 7"
))
//.pipe(gulp.dest(paths.dist + '/css'))
.pipe(minifycss())
.pipe(gulp.dest(paths.dist + '/css'));
});
/*gulp.task('scripts', function () {
browserify(paths.mainScript,
{
debug: true,
insertGlobals: true
})
.bundle()
.on('error', function (err) {
console.log(err.toString());
this.emit('end');
})
.pipe(source('bundle.js'))
.pipe(gulp.dest(paths.dist + '/js'));
});*/
gulp.task('modernizr', function() {
gulp.src(paths.scripts)
.pipe(plumber())
.pipe(modernizr())
.pipe(gulp.dest("public/js"))
});
gulp.task('scripts', function() {
return gulp.src([
'bower_components/angular/angular.js',
'bower_components/angular-i18n/angular-locale_no.js',
'bower_components/angular-animate/angular-animate.js',
'bower_components/angular-route/angular-route.js',
'bower_components/angular-foundation/mm-foundation-tpls.js',
'public/js/modernizr.js',
'src/js/main.js',
'src/js/routes.js',
'src/js/directives/valid-password-directive.js',
'src/js/directives/typeahead-directive.js',
'src/js/directives/search-typeahead-directive.js',
'src/js/directives/datepicker-directive.js',
'src/js/directives/valid-file-directive.js',
'src/js/controllers/calendar-controller.js',
'src/js/controllers/contact-controller.js',
'src/js/controllers/navigation-controller.js',
'src/js/controllers/page-controller-offline.js',
'src/js/controllers/subject-controller.js',
'src/js/controllers/autocomplete-controller.js',
'src/js/controllers/search-controller.js',
'src/js/controllers/footer-controller.js',
'src/js/controllers/form-controller.js',
'src/js/services/data-service.js',
'src/js/services/offline-data-service.js',
'src/js/services/date-service.js',
'src/js/services/focus-service.js'
])
.pipe(plumber())
.pipe(concat('bundle.js'))
.pipe(gulp.dest(paths.dist + '/js'))
});
gulp.task('scripts_server', function() {
return gulp.src([
'bower_components/angular/angular.js',
'bower_components/angular-i18n/angular-locale_no.js',
'bower_components/angular-animate/angular-animate.js',
'bower_components/angular-route/angular-route.js',
'bower_components/angular-foundation/mm-foundation-tpls.js',
'public/js/modernizr.js',
'src/js/main.js',
'src/js/directives/valid-password-directive.js',
'src/js/directives/typeahead-directive.js',
'src/js/directives/search-typeahead-directive.js',
'src/js/directives/datepicker-directive.js',
'src/js/directives/valid-file-directive.js',
'src/js/controllers/calendar-controller.js',
'src/js/controllers/contact-controller.js',
'src/js/controllers/navigation-controller.js',
'src/js/controllers/page-controller.js',
'src/js/controllers/subject-controller.js',
'src/js/controllers/autocomplete-controller.js',
'src/js/controllers/search-controller.js',
'src/js/controllers/footer-controller.js',
'src/js/controllers/form-controller.js',
'src/js/services/data-service.js',
'src/js/services/date-service.js',
'src/js/services/focus-service.js'
])
.pipe(plumber())
.pipe(concat('bundle_server.js'))
.pipe(uglify({ mangle: false })) // after dev.
.pipe(gulp.dest(paths.dist + '/js'))
});
// Compress images
gulp.task('imagemin', function() {
gulp.src(paths.images)
.pipe(plumber())
//.pipe(imagemin())
.pipe(gulp.dest(paths.dist + '/img'));
});
// Copy all static assets
gulp.task('copyFonts', function() {
return gulp.src(paths.fonts)
.pipe(gulp.dest(paths.dist + '/fonts'));
});
// deploy to external folder
gulp.task('deploy', function() {
return gulp.src(paths.dist, {base:"."})
.pipe(gulp.dest('../../ks.prototype'));
});
// Watch files
gulp.task('watch', function(event) {
gulp.watch(paths.templates, ['jade']);
gulp.watch(paths.scss, ['sass']);
gulp.watch(paths.images, ['imagemin']);
gulp.watch(paths.fonts, ['copyFonts']);
gulp.watch(paths.scripts, ['scripts', 'scripts_server']);
});
// Create dist
gulp.task('build', ['jade', 'sass', 'modernizr', 'scripts', 'scripts_server', 'imagemin', 'copyFonts']);
// default grunt
gulp.task('default', ['build', 'watch', 'deployd']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment