gulpTasks-apps.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Gulp Tools
  2. var gulp = require("gulp");
  3. var webpack = require('webpack');
  4. var webpackStream = require("webpack-stream");
  5. var path = require("path");
  6. // Import Build Config
  7. var config = require("../../Config/config.js");
  8. /**
  9. * Build a single app
  10. */
  11. var buildApp = function(libraries, settings, isMin) {
  12. // Convert Module to Namespace for globals
  13. var outputDirectory = settings.computed.distDirectory;
  14. // Webpack Config.
  15. var wpConfig = require(settings.computed.webpackConfigPath);
  16. // Create output by type (min vs max).
  17. if (isMin) {
  18. delete wpConfig.devtool;
  19. }
  20. else {
  21. // Map Output
  22. wpConfig.devtool = "source-map";
  23. wpConfig.output.devtoolModuleFilenameTemplate = (info) => {
  24. info.resourcePath = path.normalize(info.resourcePath);
  25. if (!path.isAbsolute(info.resourcePath)) {
  26. info.resourcePath = path.join(settings.computed.srcDirectory, info.resourcePath);
  27. }
  28. return `webpack://BABYLONJS/${path.relative(config.computed.rootFolder, info.resourcePath).replace(/\\/g, "/")}`;
  29. };
  30. // Generate unminified file.
  31. wpConfig.mode = "development";
  32. }
  33. // Generate minified file.
  34. let wpBuild = webpackStream({ config: wpConfig }, webpack);
  35. return wpBuild.pipe(gulp.dest(outputDirectory));
  36. }
  37. /**
  38. * Dynamic app creation In Serie for WebPack leaks.
  39. */
  40. function buildAppLibraries(settings) {
  41. // Creates the required tasks.
  42. var tasks = [];
  43. var buildMin = function() { return buildApp(settings.libraries, settings, true) };
  44. tasks.push(buildMin);
  45. return gulp.series.apply(this, tasks);
  46. }
  47. /**
  48. * Dynamic app creation.
  49. */
  50. config.apps.map(function(app) {
  51. const settings = config[app];
  52. gulp.task(app, buildAppLibraries(settings));
  53. });
  54. /**
  55. * Build all libs.
  56. */
  57. gulp.task("typescript-apps", gulp.series(config.apps));