gulpfile.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. "use strict";
  2. var gulp = require("gulp"),
  3. gutil = require("gulp-util"),
  4. plumber = require("gulp-plumber"),
  5. bower = require("gulp-bower"),
  6. peg = require("gulp-peg"),
  7. deploy = require("gulp-gh-pages"),
  8. babel = require("gulp-babel"),
  9. rename = require("gulp-rename"),
  10. uglify = require("gulp-uglify"),
  11. minifyCss = require("gulp-minify-css"),
  12. concat = require("gulp-concat"),
  13. useref = require("gulp-useref"),
  14. gulpif = require("gulp-if"),
  15. ngAnnotate = require("gulp-ng-annotate"),
  16. errLogger = gutil.log.bind(gutil, gutil.colors.red("Error: ")),
  17. opts = {
  18. buildDir: "build",
  19. };
  20. gulp
  21. .task("pre", function() {
  22. gulp.src(["src/web/**/*.html", "!src/web/index.html", "!src/web/bower_components/**/*"])
  23. .pipe(plumber(errLogger))
  24. .pipe(gulp.dest(opts.buildDir + "/web"));
  25. return gulp.src("src/web/assets/**/*")
  26. .pipe(plumber(errLogger))
  27. .pipe(babel())
  28. .pipe(uglify())
  29. .pipe(gulp.dest(opts.buildDir + "/web/assets"));
  30. })
  31. .task("bower", function() {
  32. return bower();
  33. })
  34. .task("minify", ["pre", "bower"], function() {
  35. var assets = useref.assets();
  36. return gulp.src("src/web/index.html")
  37. .pipe(plumber(errLogger))
  38. .pipe(assets)
  39. .pipe(gulpif("index.min.js", babel({blacklist: ["useStrict"]})))
  40. .pipe(gulpif("index.min.js", ngAnnotate()))
  41. .pipe(gulpif("*.js", uglify()))
  42. .pipe(gulpif("*.css", minifyCss()))
  43. .pipe(assets.restore())
  44. .pipe(useref())
  45. .pipe(gulp.dest(opts.buildDir + "/web"));
  46. })
  47. .task("parser", function() {
  48. return gulp.src("src/lib/parser/modellang.pegjs")
  49. .pipe(plumber(errLogger))
  50. .pipe(peg({
  51. exportVar: "modellangParser"
  52. }))
  53. .pipe(babel({modules: "umd", blacklist: ["useStrict"]}))
  54. .pipe(gulp.dest(opts.buildDir + "/lib/parser"))
  55. .pipe(rename("modellang-parser.js"))
  56. .pipe(uglify())
  57. .pipe(gulp.dest(opts.buildDir + "/web/assets/scripts"));
  58. })
  59. .task("generator", function() {
  60. return gulp.src("src/lib/generator/modellang.es6")
  61. .pipe(plumber(errLogger))
  62. .pipe(babel())
  63. .pipe(gulp.dest(opts.buildDir + "/lib/generator"))
  64. .pipe(rename("modellang-gen.js"))
  65. .pipe(uglify())
  66. .pipe(gulp.dest(opts.buildDir + "/web/assets/scripts"));
  67. })
  68. .task("default", ["parser", "generator"], function() {
  69. return;
  70. })
  71. .task("build", ["minify", "parser", "generator"], function() {
  72. return;
  73. })
  74. .task("deploy", ["build"], function() {
  75. return gulp.src(opts.buildDir + "/web/**/*")
  76. .pipe(deploy({
  77. push: gutil.env.nopush ? false : true,
  78. }));
  79. })
  80. ;