Nenhuma Descrição

gulpfile.js 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. 'use strict';
  2. var gulp = require('gulp');
  3. var browserify = require('browserify');
  4. var uglify = require('gulp-uglify');
  5. var source = require('vinyl-source-stream');
  6. var buffer = require('vinyl-buffer');
  7. var rename = require('gulp-rename');
  8. var gulpif = require('gulp-if');
  9. var sass = require('gulp-sass');
  10. var pug = require('gulp-pug');
  11. var copy = require('gulp-copy');
  12. var eslint = require('gulp-eslint');
  13. var sourcemaps = require('gulp-sourcemaps');
  14. var header = require('gulp-header');
  15. var isSourcemaps = require('minimist')(process.argv.slice(2)).sourcemaps;
  16. var appVersion = require('./package.json').version;
  17. // LIB
  18. gulp.task('lint', function() {
  19. return gulp.src('./lib/*.js').pipe(eslint())
  20. .pipe(eslint.format())
  21. // Brick on failure to be super strict
  22. .pipe(eslint.failOnError());
  23. });
  24. gulp.task('build', gulp.series('lint',function() {
  25. return browserify({ entries: 'standalone.js', debug: isSourcemaps }).bundle()
  26. .pipe(source('./granim.js'))
  27. .pipe(buffer())
  28. .pipe(gulpif(!isSourcemaps, header('/*! Granim v' + appVersion + ' - https://sarcadass.github.io/granim.js */\n')))
  29. .pipe(gulp.dest('./dist/'));
  30. }));
  31. gulp.task('buildMin', gulp.series('build', function() {
  32. return gulp.src('./dist/granim.js')
  33. .pipe(rename({ suffix: '.min' }))
  34. .pipe(uglify({ preserveComments: 'license' }))
  35. .pipe(gulp.dest('./dist/'));
  36. }));
  37. gulp.task('docDist', gulp.series('buildMin', function() {
  38. return gulp.src('./dist/granim.min.js')
  39. .pipe(copy('./docs/assets/js/vendor/', { prefix: 1 }));
  40. }));
  41. // DOC
  42. gulp.task('buildDoc:html', function() {
  43. return gulp.src('./docs/assets/pug/*.pug')
  44. .pipe(pug({
  45. pretty: false,
  46. locals: require('./package.json')
  47. }))
  48. .pipe(gulp.dest('./docs/'));
  49. });
  50. gulp.task('buildDoc:js', function() {
  51. return browserify({ entries: './docs/assets/js/app/index.js', debug: isSourcemaps }).bundle()
  52. .pipe(source('./index.js'))
  53. .pipe(buffer())
  54. .pipe(uglify())
  55. .pipe(rename('script.js'))
  56. .pipe(gulp.dest('./docs/assets/js/'));
  57. });
  58. gulp.task('buildDoc:css', function() {
  59. return gulp.src('./docs/assets/css/scss/index.scss')
  60. .pipe(gulpif(isSourcemaps, sourcemaps.init({ loadMaps: true })))
  61. .pipe(sass({ outputStyle: 'compressed' })
  62. .on('error', sass.logError)
  63. )
  64. .pipe(gulpif(isSourcemaps, sourcemaps.write({ includeContent: true })))
  65. .pipe(rename('style.css'))
  66. .pipe(gulp.dest('./docs/assets/css/'));
  67. });
  68. // TASKS
  69. //// lib
  70. gulp.task('default', gulp.series('docDist'));
  71. gulp.task('watch', gulp.series('default', function() {
  72. gulp.watch('./lib/**/*.js', gulp.series('default'))
  73. }));
  74. //// doc
  75. gulp.task('buildDoc', gulp.series(['buildDoc:html', 'buildDoc:js', 'buildDoc:css']));
  76. gulp.task('watchDoc', gulp.series('buildDoc', function() {
  77. gulp.watch('./docs/assets/pug/**/*', gulp.series('buildDoc:html'));
  78. gulp.watch('./docs/assets/js/app/**/*', gulp.series('buildDoc:js'));
  79. gulp.watch('./docs/assets/css/scss/**/*', gulp.series('buildDoc:css'));
  80. }));