選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

gulpfile.js 3.7 KiB

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