Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

155 строки
3.4 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 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'], function() {
  60. return es.merge(
  61. gulp.src([
  62. './src/main/javascript/**/*.js',
  63. './node_modules/swagger-client/browser/swagger-client.js'
  64. ]),
  65. templates()
  66. )
  67. .pipe(order(['scripts.js', 'templates.js']))
  68. .pipe(concat('swagger-ui.js'))
  69. .pipe(wrap('(function(){<%= contents %>}).call(this);'))
  70. .pipe(header(banner, { pkg: pkg } ))
  71. .pipe(gulp.dest('./dist'))
  72. .pipe(uglify())
  73. .on('error', log)
  74. .pipe(rename({extname: '.min.js'}))
  75. .on('error', log)
  76. .pipe(gulp.dest('./dist'))
  77. .pipe(connect.reload());
  78. });
  79. /**
  80. * Processes less files into CSS files
  81. */
  82. gulp.task('less', ['clean'], function() {
  83. return gulp
  84. .src([
  85. './src/main/less/screen.less',
  86. './src/main/less/print.less',
  87. './src/main/less/reset.less',
  88. './src/main/less/style.less'
  89. ])
  90. .pipe(less())
  91. .on('error', log)
  92. .pipe(gulp.dest('./src/main/html/css/'))
  93. .pipe(connect.reload());
  94. });
  95. /**
  96. * Copy lib and html folders
  97. */
  98. gulp.task('copy', ['less'], function() {
  99. // copy JavaScript files inside lib folder
  100. gulp
  101. .src(['./lib/**/*.{js,map}'])
  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. /**
  116. * Watch for changes and recompile
  117. */
  118. gulp.task('watch', function() {
  119. return watch(['./src/**/*.{js,less,handlebars}'], function() {
  120. gulp.start('default');
  121. });
  122. });
  123. /**
  124. * Live reload web server of `dist`
  125. */
  126. gulp.task('connect', function() {
  127. connect.server({
  128. root: 'dist',
  129. livereload: true
  130. });
  131. });
  132. function log(error) {
  133. console.error(error.toString && error.toString());
  134. }
  135. gulp.task('default', ['dist', 'copy']);
  136. gulp.task('serve', ['connect', 'watch']);