gulpfile.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. var gulp = require("gulp");
  2. var uglify = require("gulp-uglify");
  3. var typescript = require("gulp-typescript");
  4. var srcToVariable = require("./gulp-srcToVariable");
  5. var merge2 = require("merge2");
  6. var concat = require("gulp-concat");
  7. var rename = require("gulp-rename");
  8. var cleants = require('gulp-clean-ts-extends');
  9. var replace = require("gulp-replace");
  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. /*
  19. Compiles all typescript files and creating a declaration file.
  20. */
  21. gulp.task('default', function () {
  22. var tasks = config.materials.map(function (material) {
  23. var js = gulp.src(material.file)
  24. .pipe(typescript({
  25. noExternalResolve: false,
  26. target: 'ES5',
  27. declarationFiles: true,
  28. typescript: require('typescript')
  29. })).js;
  30. var shader = gulp.src(material.shaderFiles).pipe(srcToVariable("BABYLON.Effect.ShadersStore", true, shadersName));
  31. return merge2(js, shader)
  32. .pipe(cleants())
  33. .pipe(replace(extendsSearchRegex, ""))
  34. .pipe(concat(material.output))
  35. .pipe(gulp.dest(config.build.distOutputDirectory));
  36. });
  37. return tasks;
  38. });