- var gulp = require('gulp');
- var jshintorig = require('jshint');
- var jshint = require('gulp-jshint');
- var concat = require('gulp-concat');
- var rename = require('gulp-rename');
- var uglify = require('gulp-uglify');
- var notify = require('gulp-notify');
- var sass = require('gulp-sass');
- var autoprefixer = require('gulp-autoprefixer');
- var sourcemaps = require('gulp-sourcemaps');
- var plumber = require('gulp-plumber');
- var del = require('del');
- var data = require('gulp-data');
- var stylus = require('gulp-stylus');
- var nib = require('nib');
- var browserSync = require('browser-sync').create();
- var reload = browserSync.reload
- var reportError = function (error) {
- var lineNumber = (error.lineNumber) ? 'LINE ' + error.lineNumber + ' -- ' : '';
- notify({
- title: 'Task Failed [' + error.plugin + ']',
- message: lineNumber + 'See console.',
- }).write(error);
- var report = '';
- report += 'TASK:' + ' [' + error.plugin + ']\n';
- report += 'PROB:' + ' ' + error.message + '\n';
- if (error.lineNumber) { report += 'LINE:' + ' ' + error.lineNumber + '\n'; }
- if (error.fileName) { report += 'FILE:' + ' ' + error.fileName + '\n'; }
- console.error(report);
- this.emit('end');
- }
- var reportJSHintError = function(error) {
- var lineNumber = (error.lineNumber) ? 'LINE ' + error.lineNumber + ' -- ' : '';
- notify({
- title: 'Task Failed [' + error.plugin + ']',
- message: lineNumber + 'See console.',
- }).write(error);
- this.emit('end');
- }
- gulp.task('clean', function() {
- return del(['dist']);
- });
- gulp.task('scripts', function() {
- return gulp.src('app/source/scripts/**/*.js')
- .pipe(plumber({ errorHandler: reportJSHintError }))
- .pipe(sourcemaps.init())
- .pipe(jshint())
- .pipe(jshint.reporter('jshint-stylish'))
- .pipe(concat('main.js'))
- .pipe(rename({ suffix: '.min' }))
- .pipe(uglify())
- .pipe(sourcemaps.write())
- .pipe(gulp.dest('app/dist/scripts'));
- // .pipe(notify({ message: 'Scripts task complete' }));
- });
- gulp.task('scss', function() {
- return gulp.src('app/source/scss/**/*.scss')
- .pipe(plumber({ errorHandler: reportError }))
- .pipe(sourcemaps.init())
- .pipe(autoprefixer('last 2 versions', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
- .pipe(sass({ style: 'compressed', }))
- .pipe(concat('main.css'))
- .pipe(rename({ suffix: '.min' }))
- .pipe(sourcemaps.write())
- .pipe(gulp.dest('app/dist/styles'));
- //.pipe(notify({ message: 'Styles task complete' }));
- });
- gulp.task('stylus', function() {
- return gulp.src('app/source/stylus/**/styles.styl')
- .pipe(plumber({ errorHandler: reportError }))
- .pipe(sourcemaps.init())
- .pipe(stylus({use: nib(), import: ['nib'], 'include css': true}))
- .pipe(concat('styles.css'))
- .pipe(rename({ suffix: '.min' }))
- .pipe(sourcemaps.write())
- .pipe(gulp.dest('app/dist/styles'));
- //.pipe(notify({ message: 'Stylus task complete' }));
- });
- gulp.task('html', function() {
- return gulp.src(['app/source/html/**/*.*'])
- .pipe(gulp.dest('app/dist'));
- });
- gulp.task('libs', function() {
- return gulp.src(['app/source/libs/**/*.*'])
- .pipe(gulp.dest('app/dist/libs'));
- });
- gulp.task('fonts', function() {
- return gulp.src(['app/source/fonts/**/*.*'])
- .pipe(gulp.dest('app/dist/fonts'));
- });
- gulp.task('images', function() {
- return gulp.src(['app/source/images/**/*.*'])
- .pipe(gulp.dest('app/dist/img'));
- });
- gulp.task('favicons', function() {
- return gulp.src(['app/source/favicons/**/*.*'])
- .pipe(gulp.dest('app/dist/favicons'));
- });
- gulp.task('browserSyncInit', function() {
- browserSync.init({
- server: 'app/dist',
- port: 8080,
- logLevel: 'silent'
- });
- });
- gulp.task('browserSync', function() {
- gulp.watch('app/dist/**/*').on('change', browserSync.reload);
- });
- gulp.task('default', ['browserSyncInit'], function() {
- tasks = ['clean', 'scripts', 'stylus', 'html', 'libs', 'fonts', 'images', 'favicons', 'browserSync']
- gulp.watch('app/source/**/*', tasks);
- });