gulpfile.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 config = require("./config.json");
  11. var extendsSearchRegex = /var\s__extends[\s\S]+?\};/g;
  12. //function to convert the shaders' filenames to variable names.
  13. function shadersName(filename) {
  14. return filename.replace('.fragment', 'Pixel')
  15. .replace('.vertex', 'Vertex')
  16. .replace('.fx', 'Shader');
  17. }
  18. gulp.task('copyReference', function () {
  19. return gulp.src("../dist/preview release/babylon.max.js").pipe(gulp.dest("test"));
  20. });
  21. /*
  22. Compiles all typescript files and creating a declaration file.
  23. */
  24. gulp.task('default', ["copyReference"], function () {
  25. var tasks = config.materials.map(function (material) {
  26. var js = gulp.src(material.file)
  27. .pipe(typescript({
  28. noExternalResolve: false,
  29. target: 'ES5',
  30. declarationFiles: true,
  31. typescript: require('typescript')
  32. })).js;
  33. var shader = gulp.src(material.shaderFiles).pipe(srcToVariable("BABYLON.Effect.ShadersStore", true, shadersName));
  34. return merge2(js, shader)
  35. .pipe(cleants())
  36. .pipe(replace(extendsSearchRegex, ""))
  37. .pipe(concat(material.output))
  38. .pipe(gulp.dest(config.build.distOutputDirectory));
  39. });
  40. return tasks;
  41. });
  42. /**
  43. * Web server task to serve a local test page
  44. */
  45. gulp.task('webserver', function() {
  46. gulp.src('.')
  47. .pipe(webserver({
  48. livereload: false,
  49. open: 'http://localhost:1338/test/index.html',
  50. port: 1338,
  51. fallback: 'index.html'
  52. }));
  53. });