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.
 
 
 
 

138 lines
3.1 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 handlebars = require('gulp-handlebars');
  10. var wrap = require('gulp-wrap');
  11. var declare = require('gulp-declare');
  12. var watch = require('gulp-watch');
  13. var connect = require('gulp-connect');
  14. var header = require('gulp-header');
  15. var pkg = require('./package.json');
  16. var order = require('gulp-order');
  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. * Processes Handlebars templates
  35. */
  36. function templates() {
  37. return gulp
  38. .src(['./src/main/template/**/*'])
  39. .pipe(handlebars())
  40. .pipe(wrap('Handlebars.template(<%= contents %>)'))
  41. .pipe(declare({
  42. namespace: 'Handlebars.templates',
  43. noRedeclare: true, // Avoid duplicate declarations
  44. }))
  45. .on('error', log);
  46. }
  47. /**
  48. * Build a distribution
  49. */
  50. gulp.task('dist', ['clean'], function() {
  51. return es.merge(
  52. gulp.src([
  53. './src/main/javascript/**/*.js',
  54. './node_modules/swagger-client/browser/swagger-client.js'
  55. ]),
  56. templates()
  57. )
  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(gulp.dest('./dist'))
  63. .pipe(uglify())
  64. .on('error', log)
  65. .pipe(rename({extname: '.min.js'}))
  66. .on('error', log)
  67. .pipe(gulp.dest('./dist'))
  68. .pipe(connect.reload());
  69. });
  70. /**
  71. * Processes less files into CSS files
  72. */
  73. gulp.task('less', ['clean'], function() {
  74. return gulp
  75. .src([
  76. './src/main/less/screen.less',
  77. './src/main/less/print.less',
  78. './src/main/less/reset.less'
  79. ])
  80. .pipe(less())
  81. .on('error', log)
  82. .pipe(gulp.dest('./src/main/html/css/'))
  83. .pipe(connect.reload());
  84. });
  85. /**
  86. * Copy lib and html folders
  87. */
  88. gulp.task('copy', ['less'], function() {
  89. // copy JavaScript files inside lib folder
  90. gulp
  91. .src(['./lib/**/*.{js,map}'])
  92. .pipe(gulp.dest('./dist/lib'))
  93. .on('error', log);
  94. // copy all files inside html folder
  95. gulp
  96. .src(['./src/main/html/**/*'])
  97. .pipe(gulp.dest('./dist'))
  98. .on('error', log);
  99. });
  100. /**
  101. * Watch for changes and recompile
  102. */
  103. gulp.task('watch', function() {
  104. return watch(['./src/**/*.{js,less,handlebars}'], function() {
  105. gulp.start('default');
  106. });
  107. });
  108. /**
  109. * Live reload web server of `dist`
  110. */
  111. gulp.task('connect', function() {
  112. connect.server({
  113. root: 'dist',
  114. livereload: true
  115. });
  116. });
  117. function log(error) {
  118. console.error(error.toString && error.toString());
  119. }
  120. gulp.task('default', ['dist', 'copy']);
  121. gulp.task('serve', ['connect', 'watch']);