github.com/qubitproducts/logspray@v0.2.14/server/swagger-ui/gulpfile.js (about)

     1  'use strict';
     2  
     3  var gulp = require('gulp');
     4  var es = require('event-stream');
     5  var clean = require('gulp-clean');
     6  var concat = require('gulp-concat');
     7  var uglify = require('gulp-uglify');
     8  var rename = require('gulp-rename');
     9  var less = require('gulp-less');
    10  var wrap = require('gulp-wrap');
    11  var watch = require('gulp-watch');
    12  var connect = require('gulp-connect');
    13  var header = require('gulp-header');
    14  var order = require('gulp-order');
    15  var jshint = require('gulp-jshint');
    16  var runSequence = require('run-sequence');
    17  var cssnano = require('gulp-cssnano');
    18  var pkg = require('./package.json');
    19  var sourcemaps = require('gulp-sourcemaps');
    20  
    21  
    22  var banner = ['/**',
    23    ' * <%= pkg.name %> - <%= pkg.description %>',
    24    ' * @version v<%= pkg.version %>',
    25    ' * @link <%= pkg.homepage %>',
    26    ' * @license <%= pkg.license %>',
    27    ' */',
    28    ''].join('\n');
    29  
    30  /**
    31   * Clean ups ./dist folder
    32   */
    33  gulp.task('clean', function() {
    34    return gulp
    35      .src('./dist', {read: false})
    36      .pipe(clean({force: true}))
    37      .on('error', log);
    38  });
    39  
    40  /**
    41   * JShint all *.js files
    42   */
    43  gulp.task('lint', function () {
    44    return gulp.src('./src/main/javascript/**/*.js')
    45      .pipe(jshint())
    46      .pipe(jshint.reporter('jshint-stylish'));
    47  });
    48  
    49  /**
    50   * Build a distribution
    51   */
    52  gulp.task('dist', ['clean', 'lint'], _dist);
    53  function _dist() {
    54    return es.merge(
    55      gulp.src([
    56          './node_modules/es5-shim/es5-shim.js',
    57          './lib/sanitize-html.min.js',
    58          './src/main/javascript/**/*.js',
    59          './node_modules/swagger-client/browser/swagger-client.js'
    60        ]),
    61        gulp
    62          .src(['./src/main/template/templates.js'])
    63          .on('error', log)
    64      )
    65      .pipe(sourcemaps.init({loadMaps: true}))
    66      .pipe(order(['scripts.js', 'templates.js']))
    67      .pipe(concat('swagger-ui.js'))
    68      .pipe(wrap('(function(){<%= contents %>}).call(this);'))
    69      .pipe(header(banner, { pkg: pkg }))
    70      .pipe(sourcemaps.write())
    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  gulp.task('dev-dist', ['lint', 'dev-copy'], _dist);
    80  
    81  /**
    82   * Processes less files into CSS files
    83   */
    84  gulp.task('less', ['clean'], _less);
    85  function _less() {
    86    return gulp
    87      .src([
    88        './src/main/less/screen.less',
    89        './src/main/less/print.less',
    90        './src/main/less/reset.less',
    91        './src/main/less/style.less'
    92      ])
    93      .pipe(less())
    94      .on('error', function(err){ log(err); this.emit('end');})
    95      .pipe(gulp.dest('./src/main/html/css/'))
    96      .pipe(connect.reload());
    97  }
    98  gulp.task('dev-less', _less);
    99  
   100  /**
   101   * Copy lib and html folders
   102   */
   103  gulp.task('copy', ['less'], _copy);
   104  function _copy() {
   105    // copy JavaScript files inside lib folder
   106    gulp
   107      .src(['./lib/**/*.{js,map}',
   108          './node_modules/es5-shim/es5-shim.js'
   109      ])
   110      .pipe(gulp.dest('./dist/lib'))
   111      .on('error', log);
   112  
   113    // copy `lang` for translations
   114    gulp
   115      .src(['./lang/**/*.js'])
   116      .pipe(gulp.dest('./dist/lang'))
   117      .on('error', log);
   118  
   119    // copy all files inside html folder
   120    gulp
   121      .src(['./src/main/html/**/*'])
   122      .pipe(gulp.dest('./dist'))
   123      .on('error', log);
   124  }
   125  gulp.task('dev-copy', ['dev-less', 'copy-local-specs'], _copy);
   126  
   127  gulp.task('copy-local-specs', function () {
   128    // copy the test specs
   129    return gulp
   130      .src(['./test/specs/**/*'])
   131      .pipe(gulp.dest('./dist/specs'))
   132      .on('error', log);
   133  });
   134  
   135  gulp.task('minify-css', function() {
   136      /** Minify all CSS within dist folder, runs after dist process*/
   137  
   138      return gulp.src('./dist/css/*.css')
   139          .pipe(cssnano())
   140          .pipe(gulp.dest('./dist/css'));
   141  });
   142  
   143  gulp.task('uglify-libs', function() {
   144      /**
   145       * Minify all JS libs within the dist folder.  A nice TODO would be to use versions from CDN
   146       */
   147      gulp.src('./dist/lib/*.js')
   148          .pipe(uglify())
   149          .pipe(gulp.dest('./dist/lib'));
   150  });
   151  
   152  /**
   153   * Watch for changes and recompile
   154   */
   155  gulp.task('watch', ['copy-local-specs'], function() {
   156    return watch([
   157      './src/**/*.{js,less,handlebars}',
   158      './src/main/html/*.html',
   159      './test/specs/**/*.{json,yaml}'
   160      ],
   161      function() {
   162        gulp.start('dev-dist');
   163      });
   164  });
   165  
   166  /**
   167   * Live reload web server of `dist`
   168   */
   169  gulp.task('connect', function() {
   170    connect.server({
   171      root: 'dist',
   172      livereload: true
   173    });
   174  });
   175  
   176  function log(error) {
   177    console.error(error.toString && error.toString());
   178  }
   179  
   180  gulp.task('handlebars', function () {
   181      gulp
   182          .src(['./src/main/template/templates.js'])
   183          .pipe(wrap('/* jshint ignore:start */ \n {<%= contents %>} \n /* jshint ignore:end */'))
   184          .pipe(gulp.dest('./src/main/template/'))
   185          .on('error', log);
   186  });
   187  
   188  gulp.task('default', function(callback) {
   189      runSequence(['dist', 'copy'],
   190                  ['uglify-libs', 'minify-css'],
   191                  callback);
   192  });
   193  gulp.task('serve', ['connect', 'watch']);
   194  gulp.task('dev', ['default'], function () {
   195    gulp.start('serve');
   196  });