Skip to content

Instantly share code, notes, and snippets.

@brayhoward
Last active February 8, 2016 23:23
Show Gist options
  • Save brayhoward/209e61c0b92dcaf48c23 to your computer and use it in GitHub Desktop.
Save brayhoward/209e61c0b92dcaf48c23 to your computer and use it in GitHub Desktop.
Gulpfile for Ionic with error handling. Babel(es2015), Sass, and Jade.
var gulp = require('gulp');
var gutil = require('gulp-util');
var bower = require('bower');
var concat = require('gulp-concat');
var sass = require('gulp-sass');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');
var sh = require('shelljs');
var jade = require('jade');
var gulpJade = require('gulp-jade');
var babel = require('gulp-babel');
var del = require('del');
var gulpCopy = require('gulp-copy');
var plumber = require('gulp-plumber');
var header = require('gulp-header');
var paths = {
sass: ['./public/scss/**/*.scss'],
jade: ['./public/jade/**/*.jade'],
es6 : ['./public/es6/**/*.js'],
img : ['./public/img/**/*']
};
var onError = function (err) {
gutil.beep();
console.log(err);
};
var headerMessage = 'This is a compiled file. Do Not Edit. The source file is in ./public';
gulp.task('default', ['build', 'watch']);
gulp.task('build', ['copy', 'sass', 'jade', 'es6']);
gulp.task('copy',['clean'], function() {
return gulp.src(paths.img)
.pipe(plumber(onError))
.pipe(gulpCopy('./www/', {prefix: 1}));
});
gulp.task('clean', function () {
del(['./www/img/**/*']);
});
gulp.task('es6', () => {
return gulp.src(paths.es6)
.pipe(plumber(onError))
.pipe(babel({
plugins: ['transform-es2015-arrow-functions',
'transform-es2015-template-literals',
'transform-es2015-parameters',
'transform-es2015-for-of'
]
}))
.pipe(header(`// ${headerMessage}\n\n`))
.pipe(gulp.dest('./www/js'));
});
gulp.task('jade', function (done) {
gulp.src(paths.jade)
.pipe(plumber(onError))
.pipe(gulpJade({
jade: jade,
pretty: true
}))
.pipe(header(`<!-- ${headerMessage} -->\n\n`))
.pipe(gulp.dest('./www/'))
.on('end', done);
});
gulp.task('sass', function(done) {
gulp.src(paths.sass)
.pipe(plumber(onError))
.pipe(sass())
.on('error', sass.logError)
.pipe(header(`/* ${headerMessage} */\n\n`))
.pipe(gulp.dest('./www/css/'))
.pipe(minifyCss({
keepSpecialComments: 0
}))
.pipe(rename({ extname: '.min.css' }))
.pipe(gulp.dest('./www/css/'))
.on('end', done);
});
gulp.task('watch', function() {
gulp.watch(paths.sass, ['sass']);
gulp.watch(paths.jade, ['jade']);
gulp.watch(paths.es6, ['es6']);
gulp.watch(paths.img, ['copy']);
});
gulp.task('install', ['git-check'], function() {
return bower.commands.install()
.on('log', function(data) {
gutil.log('bower', gutil.colors.cyan(data.id), data.message);
});
});
gulp.task('git-check', function(done) {
if (!sh.which('git')) {
console.log(
' ' + gutil.colors.red('Git is not installed.'),
'\n Git, the version control system, is required to download Ionic.',
'\n Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.',
'\n Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.'
);
process.exit(1);
}
done();
});
@brayhoward
Copy link
Author

Don't forget to install your dependencies
npm install --save-dev gulp jade gulp-jade gulp-babel del gulp-copy gulp-plumber gulp-header

@brayhoward
Copy link
Author

Create a public folder in the root of the project and with the subdirectories sass, sade, es6, and img for all of your precompiled code.
_desktop_code_jeannie_gulpfile_js _jeannie

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment