25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

gulpfile.js 3.1 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. var header = require('gulp-header');
  17. var pkg = require('./package.json');
  18. var order = require('gulp-order');
  19. var banner = ['/**',
  20. ' * <%= pkg.name %> - <%= pkg.description %>',
  21. ' * @version v<%= pkg.version %>',
  22. ' * @link <%= pkg.homepage %>',
  23. ' * @license <%= pkg.license %>',
  24. ' */',
  25. ''].join('\n');
  26. /**
  27. * Clean ups ./dist folder
  28. */
  29. gulp.task('clean', function() {
  30. return gulp
  31. .src('./dist', {read: false})
  32. .pipe(clean({force: true}))
  33. .on('error', gutil.log);
  34. });
  35. /**
  36. * Processes Handlebars templates
  37. */
  38. function templates() {
  39. return gulp
  40. .src(['./src/main/template/**/*'])
  41. .pipe(handlebars())
  42. .pipe(wrap('Handlebars.template(<%= contents %>)'))
  43. .pipe(declare({
  44. namespace: 'Handlebars.templates',
  45. noRedeclare: true, // Avoid duplicate declarations
  46. }))
  47. .on('error', gutil.log);
  48. }
  49. /**
  50. * Processes CoffeeScript files
  51. */
  52. function coffeescript () {
  53. return gulp
  54. .src(['./src/main/coffeescript/**/*.coffee'])
  55. .pipe(coffee({bare: true}))
  56. .on('error', gutil.log);
  57. }
  58. /**
  59. * Build a distribution
  60. */
  61. gulp.task('dist', ['clean'], function() {
  62. return es.merge(
  63. gulp.src('./src/main/javascript/doc.js'),
  64. coffeescript(),
  65. templates()
  66. )
  67. .pipe(order(['docs.js', 'scripts.js', 'templates.js']))
  68. .pipe(concat('swagger-ui.js'))
  69. .pipe(header(banner, { pkg: pkg } ))
  70. .pipe(gulp.dest('./dist'))
  71. .pipe(uglify())
  72. .pipe(rename({extname: '.min.js'}))
  73. .on('error', gutil.log)
  74. .pipe(gulp.dest('./dist'))
  75. .pipe(connect.reload());
  76. });
  77. /**
  78. * Processes less files into CSS files
  79. */
  80. gulp.task('less', ['clean'], function() {
  81. return gulp
  82. .src([
  83. './src/main/less/screen.less',
  84. './src/main/less/print.less',
  85. './src/main/less/reset.less'
  86. ])
  87. .pipe(less())
  88. .on('error', gutil.log)
  89. .pipe(gulp.dest('./src/main/html/css/'))
  90. .pipe(connect.reload());
  91. });
  92. /**
  93. * Copy lib and html folders
  94. */
  95. gulp.task('copy', ['less'], function() {
  96. // copy JavaScript files inside lib folder
  97. gulp
  98. .src(['./lib/**/*.{js,map}'])
  99. .pipe(gulp.dest('./dist/lib'))
  100. .on('error', gutil.log)
  101. // copy all files inside html folder
  102. gulp
  103. .src(['./src/main/html/**/*'])
  104. .pipe(gulp.dest('./dist'))
  105. .on('error', gutil.log)
  106. });
  107. /**
  108. * Watch for changes and recompile
  109. */
  110. gulp.task('watch', function() {
  111. return watch(['./src/**/*.{coffee,js,less,handlebars}'], function() {
  112. gulp.start('default');
  113. });
  114. });
  115. /**
  116. * Live reload web server of `dist`
  117. */
  118. gulp.task('connect', function() {
  119. connect.server({
  120. root: 'dist',
  121. livereload: true
  122. });
  123. });
  124. gulp.task('default', ['dist', 'copy']);
  125. gulp.task('serve', ['connect', 'watch'])