From 55312785d86cd21ce08313d300ff0f054d17419a Mon Sep 17 00:00:00 2001
From: Antoine Rey <antoine.rey@gmail.com>
Date: Sun, 23 Oct 2016 19:10:51 +0200
Subject: [PATCH] Using gulp for minifying CSS and JS

---
 .gitignore                               |  4 ---
 springboot-petclinic-client/.gitignore   |  3 ++
 springboot-petclinic-client/gulpfile.js  | 42 ++++++++++++++++++++++++
 springboot-petclinic-client/package.json |  5 ++-
 springboot-petclinic-client/pom.xml      |  8 ++++-
 5 files changed, 56 insertions(+), 6 deletions(-)
 create mode 100644 springboot-petclinic-client/.gitignore
 create mode 100644 springboot-petclinic-client/gulpfile.js

diff --git a/.gitignore b/.gitignore
index 22915b52..b06a9e2c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,3 @@ target/
 
 # Branch switching
 generated/
-
-# Front-end client
-node_modules/
-bower_components/
\ No newline at end of file
diff --git a/springboot-petclinic-client/.gitignore b/springboot-petclinic-client/.gitignore
new file mode 100644
index 00000000..e6eb5c8f
--- /dev/null
+++ b/springboot-petclinic-client/.gitignore
@@ -0,0 +1,3 @@
+node_modules/
+bower_components/
+npm-debug.log
\ No newline at end of file
diff --git a/springboot-petclinic-client/gulpfile.js b/springboot-petclinic-client/gulpfile.js
new file mode 100644
index 00000000..9406cf50
--- /dev/null
+++ b/springboot-petclinic-client/gulpfile.js
@@ -0,0 +1,42 @@
+var gulp = require('gulp');
+var cleanCSS = require('gulp-clean-css');
+var uglify = require('gulp-uglify');
+
+var paths = {
+    "css"    : "src/css/*",
+    "fonts"  : "src/fonts/*",
+    "images" : "src/images/*",
+    "html"   : "src/scripts/**/*.html",
+    "js"     : "src/scripts/**/*.js",
+    "dist"   : "target/dist/"
+};
+
+gulp.task('minify-css', function() {
+    return gulp.src(paths.css)
+        .pipe(cleanCSS())
+        .pipe(gulp.dest(paths.dist + 'css/'));
+});
+
+gulp.task('minify-js', function() {
+    return gulp.src(paths.js)
+        .pipe(uglify())
+        .pipe(gulp.dest(paths.dist + 'scripts/'));
+});
+
+gulp.task('copy-fonts', function() {
+    return gulp.src(paths.fonts)
+        .pipe(gulp.dest(paths.dist + 'fonts/'))
+});
+
+gulp.task('copy-html', function() {
+    return gulp.src(paths.html)
+        .pipe(gulp.dest(paths.dist + 'scripts/'))
+});
+
+gulp.task('copy-images', function() {
+    return gulp.src(paths.images)
+        .pipe(gulp.dest(paths.dist + 'images/'))
+});
+
+gulp.task('default', ['minify-css', 'minify-js', 'copy-fonts',
+          'copy-html', 'copy-images'], function() {});
diff --git a/springboot-petclinic-client/package.json b/springboot-petclinic-client/package.json
index 2e809be0..3bd8abfb 100644
--- a/springboot-petclinic-client/package.json
+++ b/springboot-petclinic-client/package.json
@@ -2,6 +2,9 @@
   "private": true,
   "dependencies": {},
   "devDependencies": {
-    "bower": "^1.7.9"
+    "bower": "^1.7.9",
+    "gulp": "^3.9.1",
+    "gulp-clean-css": "^2.0.6",
+    "gulp-uglify": "^1.5.3"
   }
 }
diff --git a/springboot-petclinic-client/pom.xml b/springboot-petclinic-client/pom.xml
index 04f549a9..fd39c545 100644
--- a/springboot-petclinic-client/pom.xml
+++ b/springboot-petclinic-client/pom.xml
@@ -18,7 +18,7 @@
 	<build>
 		<resources>
 			<resource>
-				<directory>${basedir}/src</directory>
+				<directory>${project.build.directory}/dist</directory>
 			</resource>
 			<resource>
 				<directory>${basedir}/bower_components</directory>
@@ -54,6 +54,12 @@
 							<goal>bower</goal>
 						</goals>
 					</execution>
+					<execution>
+						<id>gulp build</id>
+						<goals>
+							<goal>gulp</goal>
+						</goals>
+					</execution>
 				</executions>
 			</plugin>
 			<plugin>
-- 
GitLab