gulpfile.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. var gulp = require("gulp");
  2. var typescript = require("gulp-typescript");
  3. var srcToVariable = require("./gulp-srcToVariable");
  4. var merge2 = require("merge2");
  5. var concat = require("gulp-concat");
  6. var rename = require("gulp-rename");
  7. var cleants = require('gulp-clean-ts-extends');
  8. var replace = require("gulp-replace");
  9. var webserver = require('gulp-webserver');
  10. var uglify = require("gulp-uglify");
  11. var config = require("./config.json");
  12. var extendsSearchRegex = /var\s__extends[\s\S]+?\};/g;
  13. //function to convert the shaders' filenames to variable names.
  14. function shadersName(filename) {
  15. return filename.replace('.fragment', 'Pixel')
  16. .replace('.vertex', 'Vertex')
  17. .replace('.fx', 'Shader');
  18. }
  19. gulp.task('copyReference', function () {
  20. return gulp.src("../dist/preview release/babylon.max.js").pipe(gulp.dest("test/refs"));
  21. });
  22. /*
  23. Compiles all typescript files and creating a declaration file.
  24. */
  25. gulp.task('default', ["copyReference"], function () {
  26. var tasks = config.materials.map(function (material) {
  27. var compilOutput = gulp.src(material.file)
  28. .pipe(typescript({
  29. noExternalResolve: false,
  30. target: 'ES5',
  31. declarationFiles: true,
  32. typescript: require('typescript')
  33. }));
  34. var js = compilOutput.js;
  35. var dts = [];
  36. if (material.declarationFilename) {
  37. // Build definitions file
  38. dts = compilOutput.dts
  39. .pipe(concat(material.declarationFilename))
  40. .pipe(gulp.dest(config.build.dtsOutputDirectory));
  41. }
  42. else {
  43. // Build definitions file
  44. dts = compilOutput.dts
  45. .pipe(gulp.dest(config.build.dtsOutputDirectory));
  46. }
  47. var shader = gulp.src(material.shaderFiles).pipe(srcToVariable("BABYLON.Effect.ShadersStore", true, shadersName));
  48. return merge2(js, shader)
  49. .pipe(cleants())
  50. .pipe(replace(extendsSearchRegex, ""))
  51. .pipe(concat(material.output))
  52. .pipe(gulp.dest(config.build.distOutputDirectory))
  53. .pipe(rename({extname: ".min.js"}))
  54. .pipe(uglify())
  55. .pipe(gulp.dest(config.build.distOutputDirectory));
  56. });
  57. return tasks;
  58. });
  59. /**
  60. * Web server task to serve a local test page
  61. */
  62. gulp.task('webserver', function() {
  63. gulp.src('.')
  64. .pipe(webserver({
  65. livereload: false,
  66. open: 'http://localhost:1338/test/index.html',
  67. port: 1338,
  68. fallback: 'index.html'
  69. }));
  70. });