Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

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