Нет описания

gulpfile.js 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. var gulp = require('gulp');
  2. var concat = require('gulp-concat');
  3. var uglify = require('gulp-uglify');
  4. var header = require('gulp-header');
  5. var jshint = require('gulp-jshint');
  6. var todo = require('gulp-todo');
  7. var gulputil = require('gulp-util');
  8. var replace = require('gulp-replace');
  9. var webpack = require('webpack-stream');
  10. var beautify = require('gulp-jsbeautifier');
  11. var rename = require('gulp-rename');
  12. var moment = require('moment');
  13. var pkg = require('./package.json');
  14. var banner =
  15. '/*!\n\n' +
  16. '<%= pkg.officialName %> - <%= pkg.summary %>\nVersion <%= pkg.version %>+<%= build %>\n' +
  17. '\u00A9 <%= year %> <%= pkg.author.name %> - <%= pkg.author.url %>\n\n' +
  18. 'Site: <%= pkg.homepage %>\n' +
  19. 'Issues: <%= pkg.bugs.url %>\n' +
  20. 'License: <%= pkg.license %>\n\n' +
  21. '*/\n';
  22. function generateBuild() {
  23. var date = new Date;
  24. return Math.floor((date - (new Date(date.getFullYear(), 0, 0))) / 1000).toString(36)
  25. }
  26. var build = generateBuild();
  27. gulp.task('jshint', function() {
  28. return gulp.src([
  29. 'src/lib/*.js',
  30. 'src/lib/renderers/*.js',
  31. 'src/renderers/*.js',
  32. 'src/index.js'
  33. ])
  34. .pipe(jshint())
  35. .pipe(jshint.reporter('default'));
  36. });
  37. gulp.task('todo', function() {
  38. return gulp.src([
  39. 'src/lib/*.js',
  40. 'src/lib/renderers/*.js',
  41. 'src/renderers/*.js',
  42. 'src/index.js'
  43. ])
  44. .pipe(todo())
  45. .pipe(gulp.dest('./'));
  46. });
  47. gulp.task('build', ['jshint'], function() {
  48. return gulp.src('src/index.js')
  49. .pipe(webpack({
  50. output: {
  51. library: 'Holder',
  52. filename: 'holder.js',
  53. libraryTarget: 'umd'
  54. }
  55. }))
  56. .pipe(gulp.dest('./'));
  57. });
  58. gulp.task('bundle', ['build'], function() {
  59. return gulp.src([
  60. 'src/lib/vendor/polyfills.js',
  61. 'holder.js',
  62. 'src/meteor/shim.js'
  63. ])
  64. .pipe(concat('holder.js'))
  65. .pipe(gulp.dest('./'));
  66. });
  67. gulp.task('minify', ['bundle'], function() {
  68. return gulp.src('holder.js')
  69. .pipe(uglify())
  70. .pipe(rename('holder.min.js'))
  71. .pipe(gulp.dest('./'));
  72. });
  73. gulp.task('banner', ['minify'], function() {
  74. return gulp.src(['holder*.js'])
  75. .pipe(replace('%version%', pkg.version))
  76. .pipe(header(banner, {
  77. pkg: pkg,
  78. year: moment().format('YYYY'),
  79. build: build
  80. }))
  81. .pipe(gulp.dest('./'));
  82. });
  83. gulp.task('beautify', function() {
  84. return gulp.src(['src/lib/*.js'])
  85. .pipe(beautify())
  86. .pipe(gulp.dest('src/lib/'));
  87. });
  88. gulp.task('meteor', function() {
  89. return gulp.src('src/meteor/package.js')
  90. .pipe(replace('%version%', pkg.version))
  91. .pipe(replace('%summary%', pkg.description))
  92. .pipe(gulp.dest('./'));
  93. });
  94. gulp.task('watch', function() {
  95. gulp.watch('src/*.js', ['default']);
  96. });
  97. gulp.task('default', ['bundle', 'minify', 'banner', 'meteor'], function() {
  98. gulputil.log('Finished build ' + build);
  99. build = generateBuild();
  100. });