client/gulpfile.js
author rougeronj
Wed, 08 Apr 2015 00:36:37 +0200
changeset 77 ee963d1c409b
parent 49 88cd0bb61c12
child 78 aaffa46a2b79
permissions -rw-r--r--
Add new serializer for the data send by Orpheo. We receive XML so we parse it to json. Then we parse some html to get the proper data of each attribute. Add xmlToJson parser module to requirements.txt

var gulp = require('gulp');
var gutil = require('gulp-util')
var plugins = require("gulp-load-plugins")({lazy:false});
//var flatten = require('gulp-flatten');
//var uglify = require('gulp-uglify');
//var clean = require('gulp-clean');
//var rename = require('gulp-rename');
//var filesize = require('gulp-filesize');
//var cssmin  = require('gulp-cssmin');

gulp.task('clean', function () {
  return gulp.src('build', {read: false})
    .pipe(clean());
});

var scriptsSrc = ['!./app/**/*_test.js','./app/**/*.js'];

gulp.task('scripts', function(){
    //combine all js files of the app
    gulp.src(scriptsSrc)
        .pipe(plugins.jshint())
        .pipe(plugins.jshint.reporter('default'))
        .pipe(plugins.jshint.reporter('fail'))
        .pipe(plugins.concat('app.js'))
        .pipe(gulp.dest('./build'))
        .pipe(plugins.filesize())
        .pipe(plugins.uglify())
        .pipe(plugins.rename('app.min.js'))
        .pipe(gulp.dest('./build'))
        .pipe(plugins.filesize())
        .on('error', gutil.log);
});

gulp.task('templates',function(){
    //combine all template files of the app into a js file
    gulp.src(['!./app/index.html',
        './app/**/*.html'])
        .pipe(plugins.angularTemplatecache('templates.js',{standalone:true}))
        .pipe(gulp.dest('./build'));
});

gulp.task('css', function(){
    gulp.src('./app/**/*.css')
//        .pipe(plugins.csslint())
//        .pipe(plugins.csslint.reporter())
        .pipe(plugins.concat('app.css'))
        .pipe(gulp.dest('./build'))
        .pipe(plugins.filesize())
        .pipe(plugins.minifyCss({keepBreaks:true}))
        .pipe(plugins.rename('app.min.css'))
        .pipe(gulp.dest('./build'))
        .pipe(plugins.filesize());
});

var vendorJSsrc = [
  '!./bower_components/**/*.min.js',
  '!./bower_components/bootstrap/**/*',
  '!./bower_components/jquery/src/**/*',
  '!./bower_components/jquery-ui/themes/**',
  '!./bower_components/jquery-ui/ui/**',
  '!./bower_components/jquery-ui/ui/*.js',
  '!./bower_components/**/index.js',
  './bower_components/bootstrap/dist/css/*',
  './bower_components/jquery/dist/jquery.js',
  './bower_components/angular/angular.js',
  './bower_components/angular-route/angular-route.js',
  './bower_components/angular-resource/angular-resource.js',
  './bower_components/angular-bootstrap/ui-bootstrap.js',
  './bower_components/**/*.js'
];

gulp.task('vendorJS', function(){
    //concatenate vendor JS files
    gulp.src(vendorJSsrc)
        .pipe(plugins.concat('lib.js'))
        .pipe(gulp.dest('./build'))
        .pipe(plugins.filesize())
        .pipe(plugins.uglify())
        .pipe(plugins.rename('lib.min.js'))
        .pipe(gulp.dest('./build'))
        .pipe(plugins.filesize())
        .on('error', gutil.log);
});

gulp.task('vendorCSS', function(){
    //concatenate vendor CSS files
    gulp.src(['!./bower_components/**/*.min.css',
        './bower_components/**/*.css'])
        .pipe(plugins.concat('lib.css'))
        .pipe(gulp.dest('./build'))
        .pipe(plugins.filesize())
        .pipe(plugins.minifyCss({keepBreaks:true}))
        .pipe(plugins.rename('lib.min.css'))
        .pipe(gulp.dest('./build'))
        .pipe(plugins.filesize());
});

gulp.task('vendorFonts', function(){
    gulp.src(['./bower_components/**/fonts/*'])
        .pipe(plugins.flatten())
        .pipe(gulp.dest('./build/fonts'));
});

gulp.task('copy-index', function() {
    gulp.src('./app/index.html')
        .pipe(gulp.dest('./build'));
});

gulp.task('copy-data', function() {
    gulp.src('./data/**/*')
        .pipe(gulp.dest('./build/data'));
});

gulp.task('copy-img', function() {
    gulp.src('./img/**/*')
        .pipe(gulp.dest('./build/img'));
});

gulp.task('watch',function(){
    gulp.watch([
        'build/**/*.html',
        'build/**/*.js',
        'build/**/*.css'
    ], function(event) {
        return gulp.src(event.path)
            .pipe(plugins.connect.reload());
    });
    gulp.watch(['./app/**/*.js','!./app/**/*test.js'],['scripts']);
    gulp.watch(['!./app/index.html','./app/**/*.html'],['templates']);
    gulp.watch('./app/**/*.css',['css']);
    gulp.watch('./app/index.html',['copy-index']);
    gulp.watch('./data/**/*',['copy-data']);
    gulp.watch('./img/**/*',['copy-img']);

});

gulp.task('connect', plugins.connect.server({
    root: ['build'],
    port: 9000,
    livereload: true
}));

gulp.task('default',['connect','scripts','templates','css','copy-index','copy-data','copy-img','vendorJS','vendorCSS','vendorFonts','watch']);