var gulp = require('gulp'); var styl = require('gulp-stylus'); var autoprefixer = require('gulp-autoprefixer'); var del = require('del'); var runSequence = require('run-sequence'); var plumber = require('gulp-plumber'); var notify = require('gulp-notify'); var rename = require('gulp-rename'); var livereload = require('gulp-livereload'); var inject = require('gulp-inject'); var rev = require('gulp-rev'); var ngAnnotate = require('gulp-ng-annotate'); var templateCache = require('gulp-angular-templatecache'); var uglify = require('gulp-uglify'); var minifyCss = require('gulp-minify-css'); var merge = require('merge-stream'); var concat = require('gulp-concat'); var minifyHtml = require('gulp-minify-html'); var config = require('./build.config.js'); gulp.task('build', function (){ var tpls = gulp.src(['src/browser/main/**/*.html', '!src/browser/main/index.html', '!src/browser/main/index.inject.html'] ).pipe(templateCache({ } )).pipe(concat('tpls.js')).pipe(ngAnnotate()).pipe(uglify()).pipe(gulp.dest('build')); var js = gulp.src(['src/browser/main/**/*.js', 'src/browser/shared/**/*.js'] ).pipe(concat('app.js')).pipe(ngAnnotate()).pipe(uglify()).pipe(gulp.dest('build')); var css = gulp.src(['src/browser/main/**/*.css', 'src/browser/shared/**/*.css'] ).pipe(concat('all.css')).pipe(minifyCss()).pipe(gulp.dest('build')); return merge(tpls, js, css); } ); gulp.task('vendor', function (){ var vendors = config.vendors; var vendorFiles = vendors.map(function (vendor){ return _AN_Read_src('src', vendor); } ); vendorFiles.push('node_modules/font-awesome/**/font-awesome.css'); vendorFiles.push('node_modules/font-awesome/**/fontawesome-webfont.*'); vendorFiles.push('node_modules/font-awesome/**/FontAwesome.*'); return gulp.src(vendorFiles).pipe(gulp.dest('src/browser/vendor')); } ); gulp.task('styl', function (){ return gulp.src('src/browser/main/styles/app.styl').pipe(plumber({ errorHandler: notify.onError('Error: <%= error.message %>')} )).pipe(styl()).pipe(autoprefixer()).pipe(gulp.dest('src/browser/main/styles/')).pipe(livereload()).pipe(notify('Stylus!!')); } ); gulp.task('styl-popup', function (){ return gulp.src('src/browser/popup/styles/app.styl').pipe(plumber({ errorHandler: notify.onError('Error: <%= error.message %>')} )).pipe(styl()).pipe(autoprefixer()).pipe(gulp.dest('src/browser/popup/styles/')).pipe(livereload()).pipe(notify('Stylus!! @POPUP')); } ); gulp.task('bs', function (){ return gulp.src('src/browser/shared/styles/bootstrap.styl').pipe(plumber({ errorHandler: notify.onError('Error: <%= error.message %>')} )).pipe(styl()).pipe(autoprefixer()).pipe(gulp.dest('src/browser/shared/styles')).pipe(notify('Bootstrap compiled!!')).pipe(livereload()); } ); gulp.task('inject', function (cb){ runSequence(['inject-main', 'inject-popup'] , cb); } ); gulp.task('inject-main', function (){ return gulp.src('src/browser/main/index.inject.html').pipe(inject(gulp.src(['src/browser/main/**/*.js', 'src/browser/main/**/*.css', 'src/browser/shared/**/*.js', 'src/browser/shared/**/*.css'] , { read: false } ), { relative: true } )).pipe(rename(function (path){ path.basename = 'index'; } )).pipe(gulp.dest('src/browser/main/')); } ); gulp.task('watch-main', function (){ gulp.watch(['src/browser/main/index.inject.html', 'src/browser/main/**/*.js', 'src/browser/main/**/*.css', 'src/browser/shared/**/*.js', 'src/browser/shared/**/*.css'] , ['inject-main'] ); gulp.watch('src/browser/main/styles/**/*.styl', ['styl'] ); gulp.watch('src/browser/popup/styles/**/*.styl', ['styl-popup'] ); gulp.watch('src/browser/shared/styles/**/*.styl', ['bs'] ); livereload.listen(); } ); gulp.task('inject-popup', function (){ return gulp.src('src/browser/popup/index.inject.html').pipe(inject(gulp.src(['src/browser/popup/**/*.js', 'src/browser/popup/**/*.css', 'src/browser/shared/**/*.js', 'src/browser/shared/**/*.css'] , { read: false } ), { relative: true } )).pipe(rename(function (path){ path.basename = 'index'; } )).pipe(gulp.dest('src/browser/popup/')); } ); gulp.task('del', function (cb){ del(['build/**/*'] , cb); } ); gulp.task('default', function (cb){ runSequence('del', 'build', 'watch', cb); } );