gulpfile.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /**
  2. * Modules
  3. */
  4. var gulp = require("gulp"),
  5. uglify = require("gulp-uglify"),
  6. browserify = require("browserify"),
  7. source = require("vinyl-source-stream"),
  8. rename = require("gulp-rename"),
  9. qunit = require("gulp-qunit"),
  10. eslint = require("gulp-eslint"),
  11. gulpIf = require("gulp-if"),
  12. header = require("gulp-header"),
  13. buffer = require("vinyl-buffer"),
  14. pkg = require("./package.json"),
  15. banner =
  16. "// svg-pan-zoom v<%= pkg.version %>" +
  17. "\n" +
  18. "// https://github.com/bumbu/svg-pan-zoom" +
  19. "\n";
  20. function isFixed(file) {
  21. // TODO: why is file.eslint undefined?
  22. return typeof file.eslint === "object" && file.eslint.fixed;
  23. }
  24. /**
  25. * Build script
  26. */
  27. function compile() {
  28. return browserify({ entries: "./src/stand-alone.js" })
  29. .bundle()
  30. .on("error", function(err) {
  31. console.log(err.toString());
  32. this.emit("end");
  33. })
  34. .pipe(source("svg-pan-zoom.js"))
  35. .pipe(buffer())
  36. .pipe(header(banner, { pkg: pkg }))
  37. .pipe(gulp.dest("./dist/"))
  38. .pipe(rename("svg-pan-zoom.min.js"))
  39. .pipe(uglify())
  40. .pipe(header(banner, { pkg: pkg }))
  41. .pipe(gulp.dest("./dist/"));
  42. }
  43. /**
  44. * Watch script
  45. */
  46. function watch() {
  47. return gulp.watch("./src/**/*.js", gulp.series("compile"));
  48. }
  49. /**
  50. * Test task
  51. */
  52. function test() {
  53. return gulp.src("./tests/index.html").pipe(qunit());
  54. }
  55. /**
  56. * Check
  57. */
  58. function check() {
  59. return (
  60. gulp
  61. .src([
  62. "./**/*.js",
  63. "!./dist/**/*.js",
  64. "!./demo/**/*.js",
  65. "!./tests/assets/**/*.js",
  66. "!./src/uniwheel.js" // Ignore uniwheel
  67. ])
  68. // NOTE: this runs prettier via eslint-plugin-prettier
  69. .pipe(
  70. eslint({
  71. configFile: "./.eslintrc.json",
  72. fix: true
  73. })
  74. )
  75. .pipe(eslint.format())
  76. .pipe(gulpIf(isFixed, gulp.dest("./")))
  77. // uncomment to stop on error
  78. .pipe(eslint.failAfterError())
  79. );
  80. }
  81. exports.compile = compile;
  82. exports.watch = watch;
  83. exports.test = test;
  84. exports.check = check;
  85. /**
  86. * Build
  87. */
  88. exports.build = gulp.series([check, compile, test]);
  89. /**
  90. * Default task
  91. */
  92. exports.default = gulp.series([compile, watch]);