client/gulpfile.js
changeset 88 2db951a4a04c
parent 83 6a169ef52314
child 89 7faa53118457
--- a/client/gulpfile.js	Thu Apr 23 18:17:58 2015 +0200
+++ b/client/gulpfile.js	Thu May 21 11:07:34 2015 +0200
@@ -1,21 +1,23 @@
 var gulp = require('gulp');
 var gutil = require('gulp-util')
 var plugins = require("gulp-load-plugins")({lazy:false});
+var mainBowerFiles = require('main-bower-files');
 var htmlreplace = require('gulp-html-replace');
-//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 templateFolder = './../server/ammico';
+var staticFolder = './../server/ammico/static/ammico';
+var buildFolder = './build';
 
 var scriptsSrc = ['!./app/**/*_test.js','./app/**/*.js'];
 
+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(buildFolder+'/js'));
+});
+
 gulp.task('scripts', function(){
     //combine all js files of the app
     gulp.src(scriptsSrc)
@@ -23,62 +25,33 @@
         .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(gulp.dest(buildFolder+'/js'))
         .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.csslint({ 'box-sizing': false }))
+        .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(gulp.dest(buildFolder+'/css'))
         .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)
+    return gulp.src(mainBowerFiles('**/*.js', {
+            "overrides":{
+                "angular": {
+                    "dependencies": {
+                        "jquery": "~1.8"
+                    }
+                }
+            }
+        }))
         .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(gulp.dest(buildFolder+'/js'))
         .pipe(plugins.filesize())
         .on('error', gutil.log);
 });
@@ -88,18 +61,37 @@
     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(gulp.dest(buildFolder+'/css'))
         .pipe(plugins.filesize());
 });
 
 gulp.task('vendorFonts', function(){
     gulp.src(['./bower_components/**/fonts/*'])
         .pipe(plugins.flatten())
-        .pipe(gulp.dest('./build/fonts'));
+        .pipe(gulp.dest(buildFolder+'/fonts'));
+});
+
+gulp.task('minimify', function(){
+    gulp.src(buildFolder+'/js/lib.js')
+        .pipe(plugins.uglify())
+        .pipe(plugins.rename('lib.min.js'))
+        .pipe(gulp.dest(buildFolder+'/js'))
+        .pipe(plugins.filesize());
+    gulp.src(buildFolder+'/js/app.js')
+        .pipe(plugins.uglify())
+        .pipe(plugins.rename('app.min.js'))
+        .pipe(gulp.dest(buildFolder+'/js'))
+        .pipe(plugins.filesize());
+    gulp.src(buildFolder+'/css/app.css')
+        .pipe(plugins.minifyCss({keepBreaks:true, processImport: false}))
+        .pipe(plugins.rename('app.min.css'))
+        .pipe(gulp.dest(buildFolder+'/css'))
+        .pipe(plugins.filesize());
+    gulp.src(buildFolder+'/css/lib.css')
+        .pipe(plugins.minifyCss({keepBreaks:true, processImport: false}))
+        .pipe(plugins.rename('lib.min.css'))
+        .pipe(gulp.dest(buildFolder+'/css'))
+        .pipe(plugins.filesize());
 });
 
 gulp.task('copy-index', function() {
@@ -109,51 +101,51 @@
 
 gulp.task('copy-data', function() {
     gulp.src('./data/**/*')
-        .pipe(gulp.dest('./build/data'));
+        .pipe(gulp.dest(buildFolder+'/data'));
 });
 
 gulp.task('copy-img', function() {
     gulp.src('./img/**/*')
-        .pipe(gulp.dest('./build/img'));
+        .pipe(gulp.dest(buildFolder+'/img'));
 });
 
 gulp.task('copy-server', function() {
-    gulp.src('./build/img/**/*')
-        .pipe(gulp.dest('./../server/ammico/static/ammico/img'));
-    gulp.src('./build/fonts/**/*')
-		.pipe(gulp.dest('./../server/ammico/static/ammico/fonts'));
-    gulp.src('./build/*.js')
-    	.pipe(gulp.dest('./../server/ammico/static/ammico/js'));
-    gulp.src('./build/*.css')
-    	.pipe(gulp.dest('./../server/ammico/static/ammico/css'));
-    gulp.src('./app/index.html')
-	    .pipe(htmlreplace({
-	    	django: '{% load static %}',
-	    	js:{
-	    		src: ['lib.js', 'templates.js', 'app.js'],
-	    		tpl: '<script src="{% static \'ammico/js/%s\' %}"></script>'
-	    	},
-	    	css: {
-	    		src: ['lib.css', 'app.css'],
-	    		tpl: '<link rel="stylesheet" type="text/css" href="{% static \'ammico/css/%s\' %}"/>'
-	    	},
-	    	imgLogo: {
-	    		src: 'ammico_logo_small.png',
-	    		tpl: '<img src="{% static \'ammico/img/%s\' %}">'
-	    	},
-	    	imgFooter: {
-	    		src: 'logo_IRI_footer.png',
-	    		tpl: '<img src="{% static \'ammico/img/%s\' %}" alt="Logo IRI" />'
-	    	}
-	    }))
-    .pipe(gulp.dest('./../server/ammico/templates'));
+    gulp.src(buildFolder+'/img/**/*')
+        .pipe(gulp.dest(staticFolder+'/img'));
+    gulp.src(buildFolder+'/fonts/**/*')
+        .pipe(gulp.dest(staticFolder+'/fonts'));
+    gulp.src(buildFolder+'/js/*.js')
+        .pipe(gulp.dest(staticFolder+'/js'));
+    gulp.src(buildFolder+'/css/*.css')
+        .pipe(gulp.dest(staticFolder+'/css'));
+    gulp.src(buildFolder+'/index.html')
+        .pipe(htmlreplace({
+            django: '{% load static %}',
+            js:{
+                src: ['lib.js', 'templates.js', 'app.js'],
+                tpl: '<script src="{% static \'ammico/js/%s\' %}"></script>'
+            },
+            css: {
+                src: ['lib.css', 'app.css'],
+                tpl: '<link rel="stylesheet" type="text/css" href="{% static \'ammico/css/%s\' %}"/>'
+            },
+            imgLogo: {
+                src: 'ammico_logo_small.png',
+                tpl: '<img src="{% static \'ammico/img/%s\' %}">'
+            },
+            imgFooter: {
+                src: 'logo_IRI_footer.png',
+                tpl: '<img src="{% static \'ammico/img/%s\' %}" alt="Logo IRI" />'
+            }
+        }))
+    .pipe(gulp.dest(templateFolder+'/templates'));
 });
 
 gulp.task('watch',function(){
     gulp.watch([
-        'build/**/*.html',
-        'build/**/*.js',
-        'build/**/*.css'
+        buildFolder+'/**/*.html',
+        buildFolder+'/**/*.js',
+        buildFolder+'/**/*.css'
     ], function(event) {
         return gulp.src(event.path)
             .pipe(plugins.connect.reload());
@@ -164,13 +156,17 @@
     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']);
+gulp.task('connect', function() {
+    plugins.connect.server({
+        root: buildFolder,
+    	port: 9000,
+        livereload: true
+    });
+});
+
+gulp.task('default',['connect','scripts','css', 'templates','copy-index','copy-data','copy-img','vendorJS','vendorCSS','vendorFonts','watch']);
+gulp.task('copy-server',['scripts','css', 'templates','copy-index','copy-data','copy-img','vendorJS','vendorCSS','vendorFonts','minimify','copy-server']);
+