gulpfile.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /* eslint-env node */
  2. var gulp = require("gulp");
  3. var sass = require("gulp-sass");
  4. var minifyCSS = require("gulp-minify-css");
  5. var htmlmin = require("gulp-htmlmin");
  6. var autoprefixer = require("gulp-autoprefixer");
  7. var runSequence = require("run-sequence");
  8. var connect = require("gulp-connect");
  9. var gfi = require("gulp-file-insert");
  10. var uglify = require("gulp-uglify");
  11. var eslint = require("gulp-eslint");
  12. var size = require("gulp-size");
  13. var replace = require("gulp-replace");
  14. var protractor = require("gulp-protractor").protractor;
  15. var Karma = require("karma").Server;
  16. var rename = require("gulp-rename");
  17. function p(path) {
  18. return __dirname + (path.charAt(0) === "/" ? "" : "/") + path;
  19. }
  20. gulp.task("js", function() {
  21. return gulp
  22. .src(p("src/angular-material-calendar.js"))
  23. .pipe(eslint())
  24. .pipe(eslint.format())
  25. .pipe(gfi({
  26. "/* angular-material-calendar.html */": p("dist/angular-material-calendar.html"),
  27. "/* angular-material-calendar.css */": p("dist/angular-material-calendar.min.css")
  28. }))
  29. .pipe(gulp.dest("dist"))
  30. .pipe(gulp.dest(""))
  31. .pipe(uglify())
  32. .pipe(size({ gzip: true, prettySize: true }))
  33. .pipe(rename({ suffix: ".min" }))
  34. .pipe(gulp.dest("dist"))
  35. .pipe(gulp.dest(""));
  36. });
  37. gulp.task("html", function() {
  38. return gulp
  39. .src(p("src/angular-material-calendar.html"))
  40. .pipe(htmlmin({ collapseWhitespace: true }))
  41. .pipe(replace("\"", "'"))
  42. .pipe(gulp.dest(p("dist")))
  43. .pipe(gulp.dest(""))
  44. .pipe(connect.reload());
  45. });
  46. gulp.task("js:lint", function() {
  47. return gulp
  48. .src(p("src/angular-material-calendar.js"))
  49. .pipe(eslint())
  50. .pipe(eslint.format());
  51. });
  52. gulp.task("js:lint-ci", function() {
  53. return gulp
  54. .src(p("src/angular-material-calendar.js"))
  55. .pipe(eslint())
  56. .pipe(eslint.format())
  57. .pipe(eslint.failOnError());
  58. });
  59. gulp.task("scss", function() {
  60. return gulp
  61. .src(p("src/**/*.scss"))
  62. .pipe(sass()).on("error", sass.logError)
  63. .pipe(autoprefixer({
  64. browsers: ["last 2 versions"],
  65. cascade: false
  66. }))
  67. .pipe(gulp.dest("dist"))
  68. .pipe(gulp.dest(""))
  69. .pipe(minifyCSS())
  70. .pipe(rename({ suffix: ".min" }))
  71. .pipe(gulp.dest("dist"))
  72. .pipe(gulp.dest(""))
  73. .pipe(connect.reload());
  74. });
  75. gulp.task("karma:tdd", function(done) {
  76. new Karma({
  77. configFile: __dirname + "/karma.conf.js",
  78. singleRun: false
  79. }, done).start();
  80. });
  81. gulp.task("test", ["js:lint-ci"], function() {
  82. connect.server({ root: "website", port: 3000 });
  83. gulp
  84. .src(["./tests/e2e/**/*.spec.js"])
  85. .pipe(protractor({ configFile: p("protractor.conf.js") }))
  86. .on("error", function(e) { throw e; })
  87. .on("end", connect.serverClose);
  88. });
  89. gulp.task("build", function() {
  90. runSequence("scss", "html", "js");
  91. });
  92. gulp.task("connect", function() {
  93. connect.server({ livereload: true, root: "website", port: 3000 });
  94. });
  95. gulp.task("watch", function() {
  96. gulp.watch(p("src/**/*"), ["js:lint", "build"]);
  97. });
  98. gulp.task("default", ["karma:tdd", "connect", "watch"]);