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.
 
 
 
 

130 lines
2.7 KiB

  1. 'use strict';
  2. var gulp = require('gulp');
  3. var es = require('event-stream');
  4. var gutil = require('gulp-util');
  5. var clean = require('gulp-clean');
  6. var coffee = require('gulp-coffee');
  7. var concat = require('gulp-concat');
  8. var uglify = require('gulp-uglify');
  9. var rename = require('gulp-rename');
  10. var less = require('gulp-less');
  11. var handlebars = require('gulp-handlebars');
  12. var wrap = require('gulp-wrap');
  13. var declare = require('gulp-declare');
  14. var watch = require('gulp-watch');
  15. var connect = require('gulp-connect');
  16. /*
  17. * Clean ups ./dist folder
  18. */
  19. gulp.task('clean', function() {
  20. return gulp
  21. .src('./dist', {read: false})
  22. .pipe(clean({force: true}))
  23. .on('error', gutil.log);
  24. });
  25. /*
  26. * Processes Handlebars templates
  27. */
  28. function templates() {
  29. return gulp
  30. .src(['./src/main/template/**/*'])
  31. .pipe(handlebars())
  32. .pipe(wrap('Handlebars.template(<%= contents %>)'))
  33. .pipe(declare({
  34. namespace: 'Handlebars.templates',
  35. noRedeclare: true, // Avoid duplicate declarations
  36. }))
  37. .on('error', gutil.log);
  38. }
  39. /*
  40. * Processes CoffeeScript files
  41. */
  42. function coffeescript () {
  43. return gulp
  44. .src(['./src/main/coffeescript/**/*.coffee'])
  45. .pipe(coffee({bare: true}))
  46. .on('error', gutil.log);
  47. }
  48. /*
  49. * Build a distribution
  50. */
  51. gulp.task('dist', ['clean'], function() {
  52. return es.merge(
  53. gulp.src('./src/main/javascript/doc.js'),
  54. coffeescript(),
  55. templates()
  56. )
  57. .pipe(concat('swagger-ui.js'))
  58. .pipe(gulp.dest('./dist'))
  59. .pipe(uglify())
  60. .pipe(rename({extname: '.min.js'}))
  61. .on('error', gutil.log)
  62. .pipe(gulp.dest('./dist'))
  63. .pipe(connect.reload());
  64. });
  65. /*
  66. * Processes less files into CSS files
  67. */
  68. gulp.task('less', ['clean'], function() {
  69. return gulp
  70. .src([
  71. './src/main/less/screen.less',
  72. './src/main/less/reset.less'
  73. ])
  74. .pipe(less())
  75. .on('error', gutil.log)
  76. .pipe(gulp.dest('./src/main/html/css/'))
  77. .pipe(connect.reload());
  78. });
  79. /*
  80. * Copy lib and html folders
  81. */
  82. gulp.task('copy', ['less'], function() {
  83. // copy JavaScript files inside lib folder
  84. gulp
  85. .src(['./lib/**/*.js'])
  86. .pipe(gulp.dest('./dist/lib'))
  87. .on('error', gutil.log)
  88. // copy all files inside html folder
  89. gulp
  90. .src(['./src/main/html/**/*'])
  91. .pipe(gulp.dest('./dist'))
  92. .on('error', gutil.log)
  93. });
  94. /*
  95. * Watch for changes and recompile
  96. */
  97. gulp.task('watch', function() {
  98. return watch(['./src/**/*.{coffee,js,less}'], function() {
  99. gulp.start('default');
  100. });
  101. });
  102. /*
  103. * Live reload web server of `dist`
  104. */
  105. gulp.task('connect', function() {
  106. connect.server({
  107. root: 'dist',
  108. livereload: true
  109. });
  110. });
  111. gulp.task('default', ['dist', 'copy']);
  112. gulp.task('serve', ['connect', 'watch'])