Sin descripción

gulpfile.js 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. var beautify = require('gulp-jsbeautifier');
  2. var concat = require('gulp-concat');
  3. var eslint = require('gulp-eslint');
  4. var gulp = require('gulp');
  5. var gulputil = require('gulp-util');
  6. var header = require('gulp-header');
  7. var rename = require('gulp-rename');
  8. var replace = require('gulp-replace');
  9. var todo = require('gulp-todo');
  10. var uglify = require('gulp-uglify');
  11. var webpack = require('webpack-stream');
  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('lint', 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(eslint())
  35. .pipe(eslint.format())
  36. .pipe(eslint.failAfterError());
  37. });
  38. gulp.task('todo', function() {
  39. return gulp.src([
  40. 'src/lib/*.js',
  41. 'src/lib/renderers/*.js',
  42. 'src/renderers/*.js',
  43. 'src/index.js'
  44. ])
  45. .pipe(todo())
  46. .pipe(gulp.dest('./'));
  47. });
  48. gulp.task('build', ['lint'], function() {
  49. return gulp.src('src/index.js')
  50. .pipe(webpack({
  51. output: {
  52. library: 'Holder',
  53. filename: 'holder.js',
  54. libraryTarget: 'umd'
  55. }
  56. }))
  57. .pipe(gulp.dest('./'));
  58. });
  59. gulp.task('bundle', ['build'], function() {
  60. return gulp.src([
  61. 'src/lib/vendor/polyfills.js',
  62. 'holder.js',
  63. 'src/meteor/shim.js'
  64. ])
  65. .pipe(concat('holder.js'))
  66. .pipe(gulp.dest('./'));
  67. });
  68. gulp.task('minify', ['bundle'], function() {
  69. return gulp.src('holder.js')
  70. .pipe(uglify())
  71. .pipe(rename('holder.min.js'))
  72. .pipe(gulp.dest('./'));
  73. });
  74. gulp.task('banner', ['minify'], function() {
  75. return gulp.src(['holder*.js'])
  76. .pipe(replace('%version%', pkg.version))
  77. .pipe(header(banner, {
  78. pkg: pkg,
  79. year: moment().format('YYYY'),
  80. build: build
  81. }))
  82. .pipe(gulp.dest('./'));
  83. });
  84. gulp.task('beautify', function() {
  85. return gulp.src(['src/lib/*.js'])
  86. .pipe(beautify())
  87. .pipe(gulp.dest('src/lib/'));
  88. });
  89. gulp.task('meteor', function() {
  90. return gulp.src('src/meteor/package.js')
  91. .pipe(replace('%version%', pkg.version))
  92. .pipe(replace('%summary%', pkg.description))
  93. .pipe(gulp.dest('./'));
  94. });
  95. gulp.task('watch', function() {
  96. gulp.watch('src/*.js', ['default']);
  97. });
  98. gulp.task('default', ['bundle', 'minify', 'banner', 'meteor'], function() {
  99. gulputil.log('Finished build ' + build);
  100. build = generateBuild();
  101. });