Skip to content

Instantly share code, notes, and snippets.

@alastairparagas
Last active August 29, 2015 14:20
Show Gist options
  • Select an option

  • Save alastairparagas/516f68f02b991862d6e4 to your computer and use it in GitHub Desktop.

Select an option

Save alastairparagas/516f68f02b991862d6e4 to your computer and use it in GitHub Desktop.
Perfect Gulpfile for all my current needs
/*global require, process, console */
(function () {
'use strict';
// Dependencies
var gulp = require('gulp'),
sass = require('gulp-sass'),
plumber = require('gulp-plumber'),
sourcemaps = require('gulp-sourcemaps'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
coveralls = require('gulp-coveralls'),
rimraf = require('gulp-rimraf'),
karma = require('karma').server;
// Convert SCSS to CSS files
function scssToCSS() {
var sassSettings = {
outputStyle: 'compressed',
errLogToConsole: true
},
plumberSettings = {
errorHandler: function (error) {
console.log("SASS Error: " + error);
}
};
return gulp.src('./styles/scss/all.scss')
.pipe(plumber(plumberSettings))
.pipe(sourcemaps.init())
.pipe(sass(sassSettings))
.pipe(sourcemaps.write())
.pipe(plumber.stop())
.pipe(gulp.dest('./styles'));
}
// Uglify and Concatenate Javascript files
function jsUglifyAndMinify() {
var plumberSettings = {
errorHandler: function (error) {
console.log("JS Error: " + error);
}
};
return gulp.src([
'./app/**/config.js',
'./app/**/module.js',
'./app/**/!(module,config)*.js'
])
.pipe(plumber(plumberSettings))
.pipe(concat('app.min.js'))
.pipe(gulp.dest('./scripts/'))
.pipe(uglify())
.pipe(plumber.stop())
.pipe(gulp.dest('./scripts/'));
}
// Test Javascript files locally
function jsTestLocal(callback) {
karma.start({
configFile: __dirname + '/tests/karma.conf.js'
}, function (exitCode) {
if (callback) {
callback(exitCode);
} else {
process.exit(exitCode);
}
});
}
// Test Javascript files in CI - upload coverage of tests to Coveralls
function jsTestCI() {
karma.start({
configFile: __dirname + '/tests/karma.conf.js',
singleRun: true,
browsers: ['PhantomJS']
}, function (exitCode) {
gulp.src('./tests/coverage/**/lcov.info')
.pipe(coveralls())
.pipe(function () {
});
});
}
gulp.task('sass', scssToCSS);
gulp.task('jsMin', jsUglifyAndMinify);
gulp.task('jsTestLocal', jsTestLocal);
gulp.task('jsTestCI', jsTestCI);
gulp.task('dev', function () {
jsTestLocal();
gulp.watch('./styles/scss/**/*.scss', ['sass']);
gulp.watch('./app/**/*.js', ['jsMin']);
});
gulp.task('default', ['dev']);
gulp.task('continousIntegration', ['jsTestCI']);
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment