You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

174 lines
4.2 KiB

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