UNPKG

generator-blueman

Version:
136 lines (118 loc) 3.5 kB
'use strict'; var gulp = require('gulp'), nodemon = require('gulp-nodemon'), sass = require('gulp-sass'), rename = require('gulp-rename'), cssmin = require('gulp-minify-css'), concat = require('gulp-concat'), uglify = require('gulp-uglify'), jshint = require('gulp-jshint'), prefix = require('gulp-autoprefixer'), browserSync = require('browser-sync'), reload = browserSync.reload, minifyHTML = require('gulp-minify-html'), size = require('gulp-size'), imagemin = require('gulp-imagemin'), pngquant = require('imagemin-pngquant'), plumber = require('gulp-plumber'), notify = require('gulp-notify'), gulpLoadPlugins = require("gulp-load-plugins"), plugins = gulpLoadPlugins(); gulp.task('scss', function() { var onError = function(err) { notify.onError({ title: 'Gulp', subtitle: 'Failure!', message: "Error: <%= error.message %>", sound: 'Beep' })(err); this.emit('end'); }; return gulp.src('scss/main.scss') .pipe(plumber({errorHandler: onError})) .pipe(sass()) .pipe(size({ gzip: true, showFiles: true })) .pipe(prefix()) .pipe(rename('main.css')) .pipe(gulp.dest('public/css')) .pipe(reload({stream:true})) .pipe(cssmin()) .pipe(size({ gzip: true, showFiles: true })) .pipe(rename({ suffix: '.min' })) .pipe(gulp.dest('public/css')); }); gulp.task('nodemon', function (cb) { return nodemon({ script: 'app.js' }).on('start', function () { cb(); }); }); gulp.task('browser-sync', ['nodemon'], function() { browserSync.init(null, { server: { baseDir: 'public/' }, files: ['public/**/*.*'], port: 3000 }); }); gulp.task('js', function() { gulp.src('js/*.js') .pipe(uglify()) .pipe(size({ gzip: true, showFiles: true })) .pipe(concat('j.js')) .pipe(gulp.dest('public/js')) .pipe(reload({stream:true})); }); gulp.task('minify-html', function() { var opts = { comments:true, spare:true }; gulp.src('./*.html') .pipe(minifyHTML(opts)) .pipe(gulp.dest('public/')) .pipe(reload({stream:true})); }); gulp.task('jshint', function() { gulp.src('js/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')); }); gulp.task('watch', function() { gulp.watch('scss/**/*.scss', ['scss']); gulp.watch('js/*.js', ['jshint', 'js']); gulp.watch('./*.html', ['minify-html']); gulp.watch('img/*', ['imgmin']); }); gulp.task('imgmin', function () { return gulp.src('img/*') .pipe(imagemin({ progressive: true, svgoPlugins: [{removeViewBox: false}], use: [pngquant()] })) .pipe(gulp.dest('public/img')); }); gulp.task('nodemon', function (cb) { var called = false; return plugins.nodemon({script: 'app.js'}).on('start', function () { if (!called) { called = true; cb(); } }); }); gulp.task('build', ['js', 'imgmin', 'minify-html', 'scss'], function () { }); // build & deploy gulp.task('deploy', function (gulpCallBack) { gulp.run('build'); var spawn = require('child_process').spawn; var cf = spawn('cf', ['push'], {stdio: 'inherit'}); cf.on('exit', function (code) { gulpCallBack(code === 0 ? null : 'ERROR: cf process exited with code: ' + code); }); }); gulp.task('default', ['browser-sync', 'js', 'imgmin', 'minify-html', 'scss', 'watch']);