gulpTasks-watchLibraries.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Import Dependencies.
  2. var gulp = require("gulp");
  3. var webpack = require('webpack');
  4. var webpackStream = require("webpack-stream");
  5. var path = require("path");
  6. var processShaders = require("../helpers/gulp-processShaders");
  7. var uncommentShaders = require('../helpers/gulp-removeShaderComments');
  8. // Read the full config.
  9. var configPath = "../config.json";
  10. var config = require(configPath);
  11. /**
  12. * Watch ts files and fire repective tasks.
  13. */
  14. gulp.task("watchLibraries", function startWatch() {
  15. var tasks = [];
  16. config.modules.map(function(module) {
  17. var settings = config[module].build;
  18. if (!config[module].isCore && settings) {
  19. for (var index = 0; index < config[module].libraries.length; index++) {
  20. var library = config[module].libraries[index];
  21. if (library.preventLoadLibrary) {
  22. continue;
  23. }
  24. var configFolder = path.dirname(path.resolve(__dirname, configPath));
  25. var configPath = path.join(settings.build.mainFolder, "webpack.config.js");
  26. var wpConfig = require(path.resolve(configFolder, configPath));
  27. // watch on.
  28. wpConfig.watch = true;
  29. // dev mode and absolute path sourcemaps for debugging
  30. wpConfig.mode = "development";
  31. wpConfig.devtool = "nosources-source-map";
  32. var rootPath = path.resolve(__dirname, "../../../");
  33. var absoluteSrc = path.resolve(__dirname, "../", settings.srcDirectory);
  34. wpConfig.output.devtoolModuleFilenameTemplate = (info) => {
  35. info.resourcePath = path.normalize(info.resourcePath);
  36. if (!path.isAbsolute(info.resourcePath)) {
  37. info.resourcePath = path.join(absoluteSrc, info.resourcePath);
  38. }
  39. return `../../../${path.relative(rootPath, info.resourcePath).replace(/\\/g, "/")}`;
  40. };
  41. tasks.push(
  42. gulp.src(settings.srcDirectory + "**/*.fx")
  43. .pipe(uncommentShaders())
  44. .pipe(processShaders(false))
  45. );
  46. var outputDirectory = config.build.tempDirectory + config.build.localDevUMDFolderName + settings.distOutputDirectory;
  47. tasks.push(
  48. webpackStream(wpConfig, webpack).pipe(gulp.dest(outputDirectory))
  49. );
  50. tasks.push(
  51. gulp.watch(settings.srcDirectory + "**/*.fx", { interval: 1000 }, function() {
  52. console.log(library.output + ": Shaders.");
  53. return gulp.src(settings.srcDirectory + "**/*.fx")
  54. .pipe(uncommentShaders())
  55. .pipe(processShaders(false));
  56. })
  57. );
  58. }
  59. }
  60. });
  61. return Promise.resolve();
  62. });