gulpfile.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. 'use strict';
  2. var gulp = require('gulp');
  3. var concat = require('gulp-concat');
  4. var header = require('gulp-header');
  5. var jsdoc = require('gulp-jsdoc');
  6. var jshint = require('gulp-jshint');
  7. var nodeunit = require('gulp-nodeunit');
  8. var pkg = require('./package.json');
  9. var rename = require('gulp-rename');
  10. var rimraf = require('gulp-rimraf');
  11. var stylish = require('jshint-stylish');
  12. var uglify = require('gulp-uglify');
  13. var esformatter = require('gulp-esformatter');
  14. var runSequence = require('run-sequence');
  15. gulp.task('all', ['clean'], function() {
  16. return runSequence(['build', 'build-data']);
  17. });
  18. gulp.task('clean', function() {
  19. return gulp.src('build').pipe(rimraf());
  20. });
  21. gulp.task('build', function() {
  22. var files = [
  23. 'src/tracking.js',
  24. 'src/utils/EventEmitter.js',
  25. 'src/utils/Canvas.js',
  26. 'src/utils/DisjointSet.js',
  27. 'src/utils/Image.js',
  28. 'src/detection/ViolaJones.js',
  29. 'src/features/Brief.js',
  30. 'src/features/Fast.js',
  31. 'src/math/Math.js',
  32. 'src/math/Matrix.js',
  33. 'src/pose/EPnP.js',
  34. 'src/trackers/Tracker.js',
  35. 'src/trackers/TrackerTask.js',
  36. 'src/trackers/ColorTracker.js',
  37. 'src/trackers/ObjectTracker.js',
  38. 'src/trackers/LandmarksTracker.js',
  39. 'src/alignment/Regressor.js',
  40. 'src/alignment/LBF.js'
  41. ];
  42. return gulp.src(files)
  43. .pipe(concat('tracking.js'))
  44. .pipe(banner())
  45. .pipe(gulp.dest('build'))
  46. .pipe(uglify())
  47. .pipe(rename({
  48. suffix: '-min'
  49. }))
  50. .pipe(banner())
  51. .pipe(gulp.dest('build'));
  52. });
  53. gulp.task('build-data', function() {
  54. return gulp.src('src/detection/training/haar/**.js')
  55. .pipe(banner())
  56. .pipe(gulp.dest('build/data'))
  57. .pipe(rename({
  58. suffix: '-min'
  59. }))
  60. .pipe(uglify())
  61. .pipe(banner())
  62. .pipe(gulp.dest('build/data'));
  63. });
  64. gulp.task('docs', function() {
  65. return gulp.src(['src/**/*.js', 'README.md'])
  66. .pipe(jsdoc('docs'));
  67. });
  68. gulp.task('format', function() {
  69. return gulp.src(['src/**/*.js', '!src/detection/training/**/*.js'])
  70. .pipe(esformatter())
  71. .pipe(gulp.dest('src'));
  72. });
  73. gulp.task('lint', function() {
  74. return gulp.src('src/**/**.js')
  75. .pipe(jshint())
  76. .pipe(jshint.reporter(stylish));
  77. });
  78. gulp.task('test', function(cb) {
  79. gulp.src('test/*.js')
  80. .pipe(nodeunit())
  81. .on('end', cb);
  82. });
  83. gulp.task('test-watch', function() {
  84. return gulp.watch(['src/**/*.js', 'test/**/*.js'], ['test']);
  85. });
  86. gulp.task('watch', function() {
  87. gulp.watch('src/**/*.js', ['build']);
  88. gulp.watch('src/data/*.js', ['build-data']);
  89. });
  90. // Private helpers
  91. // ===============
  92. function banner() {
  93. var stamp = [
  94. '/**',
  95. ' * <%= pkg.name %> - <%= pkg.description %>',
  96. ' * @author <%= pkg.author.name %> <<%= pkg.author.email %>>',
  97. ' * @version v<%= pkg.version %>',
  98. ' * @link <%= pkg.homepage %>',
  99. ' * @license <%= pkg.license %>',
  100. ' */',
  101. ''
  102. ].join('\n');
  103. return header(stamp, { pkg: pkg });
  104. }