github.com/qubitproducts/logspray@v0.2.14/server/swagger-ui/gulpfile.js (about) 1 'use strict'; 2 3 var gulp = require('gulp'); 4 var es = require('event-stream'); 5 var clean = require('gulp-clean'); 6 var concat = require('gulp-concat'); 7 var uglify = require('gulp-uglify'); 8 var rename = require('gulp-rename'); 9 var less = require('gulp-less'); 10 var wrap = require('gulp-wrap'); 11 var watch = require('gulp-watch'); 12 var connect = require('gulp-connect'); 13 var header = require('gulp-header'); 14 var order = require('gulp-order'); 15 var jshint = require('gulp-jshint'); 16 var runSequence = require('run-sequence'); 17 var cssnano = require('gulp-cssnano'); 18 var pkg = require('./package.json'); 19 var sourcemaps = require('gulp-sourcemaps'); 20 21 22 var banner = ['/**', 23 ' * <%= pkg.name %> - <%= pkg.description %>', 24 ' * @version v<%= pkg.version %>', 25 ' * @link <%= pkg.homepage %>', 26 ' * @license <%= pkg.license %>', 27 ' */', 28 ''].join('\n'); 29 30 /** 31 * Clean ups ./dist folder 32 */ 33 gulp.task('clean', function() { 34 return gulp 35 .src('./dist', {read: false}) 36 .pipe(clean({force: true})) 37 .on('error', log); 38 }); 39 40 /** 41 * JShint all *.js files 42 */ 43 gulp.task('lint', function () { 44 return gulp.src('./src/main/javascript/**/*.js') 45 .pipe(jshint()) 46 .pipe(jshint.reporter('jshint-stylish')); 47 }); 48 49 /** 50 * Build a distribution 51 */ 52 gulp.task('dist', ['clean', 'lint'], _dist); 53 function _dist() { 54 return es.merge( 55 gulp.src([ 56 './node_modules/es5-shim/es5-shim.js', 57 './lib/sanitize-html.min.js', 58 './src/main/javascript/**/*.js', 59 './node_modules/swagger-client/browser/swagger-client.js' 60 ]), 61 gulp 62 .src(['./src/main/template/templates.js']) 63 .on('error', log) 64 ) 65 .pipe(sourcemaps.init({loadMaps: true})) 66 .pipe(order(['scripts.js', 'templates.js'])) 67 .pipe(concat('swagger-ui.js')) 68 .pipe(wrap('(function(){<%= contents %>}).call(this);')) 69 .pipe(header(banner, { pkg: pkg })) 70 .pipe(sourcemaps.write()) 71 .pipe(gulp.dest('./dist')) 72 .pipe(uglify()) 73 .on('error', log) 74 .pipe(rename({extname: '.min.js'})) 75 .on('error', log) 76 .pipe(gulp.dest('./dist')) 77 .pipe(connect.reload()); 78 } 79 gulp.task('dev-dist', ['lint', 'dev-copy'], _dist); 80 81 /** 82 * Processes less files into CSS files 83 */ 84 gulp.task('less', ['clean'], _less); 85 function _less() { 86 return gulp 87 .src([ 88 './src/main/less/screen.less', 89 './src/main/less/print.less', 90 './src/main/less/reset.less', 91 './src/main/less/style.less' 92 ]) 93 .pipe(less()) 94 .on('error', function(err){ log(err); this.emit('end');}) 95 .pipe(gulp.dest('./src/main/html/css/')) 96 .pipe(connect.reload()); 97 } 98 gulp.task('dev-less', _less); 99 100 /** 101 * Copy lib and html folders 102 */ 103 gulp.task('copy', ['less'], _copy); 104 function _copy() { 105 // copy JavaScript files inside lib folder 106 gulp 107 .src(['./lib/**/*.{js,map}', 108 './node_modules/es5-shim/es5-shim.js' 109 ]) 110 .pipe(gulp.dest('./dist/lib')) 111 .on('error', log); 112 113 // copy `lang` for translations 114 gulp 115 .src(['./lang/**/*.js']) 116 .pipe(gulp.dest('./dist/lang')) 117 .on('error', log); 118 119 // copy all files inside html folder 120 gulp 121 .src(['./src/main/html/**/*']) 122 .pipe(gulp.dest('./dist')) 123 .on('error', log); 124 } 125 gulp.task('dev-copy', ['dev-less', 'copy-local-specs'], _copy); 126 127 gulp.task('copy-local-specs', function () { 128 // copy the test specs 129 return gulp 130 .src(['./test/specs/**/*']) 131 .pipe(gulp.dest('./dist/specs')) 132 .on('error', log); 133 }); 134 135 gulp.task('minify-css', function() { 136 /** Minify all CSS within dist folder, runs after dist process*/ 137 138 return gulp.src('./dist/css/*.css') 139 .pipe(cssnano()) 140 .pipe(gulp.dest('./dist/css')); 141 }); 142 143 gulp.task('uglify-libs', function() { 144 /** 145 * Minify all JS libs within the dist folder. A nice TODO would be to use versions from CDN 146 */ 147 gulp.src('./dist/lib/*.js') 148 .pipe(uglify()) 149 .pipe(gulp.dest('./dist/lib')); 150 }); 151 152 /** 153 * Watch for changes and recompile 154 */ 155 gulp.task('watch', ['copy-local-specs'], function() { 156 return watch([ 157 './src/**/*.{js,less,handlebars}', 158 './src/main/html/*.html', 159 './test/specs/**/*.{json,yaml}' 160 ], 161 function() { 162 gulp.start('dev-dist'); 163 }); 164 }); 165 166 /** 167 * Live reload web server of `dist` 168 */ 169 gulp.task('connect', function() { 170 connect.server({ 171 root: 'dist', 172 livereload: true 173 }); 174 }); 175 176 function log(error) { 177 console.error(error.toString && error.toString()); 178 } 179 180 gulp.task('handlebars', function () { 181 gulp 182 .src(['./src/main/template/templates.js']) 183 .pipe(wrap('/* jshint ignore:start */ \n {<%= contents %>} \n /* jshint ignore:end */')) 184 .pipe(gulp.dest('./src/main/template/')) 185 .on('error', log); 186 }); 187 188 gulp.task('default', function(callback) { 189 runSequence(['dist', 'copy'], 190 ['uglify-libs', 'minify-css'], 191 callback); 192 }); 193 gulp.task('serve', ['connect', 'watch']); 194 gulp.task('dev', ['default'], function () { 195 gulp.start('serve'); 196 });