gulpTasks-testsES6.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Import Dependencies.
  2. const gulp = require("gulp");
  3. const path = require("path");
  4. const fs = require("fs-extra");
  5. const shelljs = require('shelljs');
  6. // Import Helpers.
  7. const colorConsole = require("../../NodeHelpers/colorConsole");
  8. // Read the full config.
  9. var config = require("../../Config/config.js");
  10. // Base Line Path.
  11. var baseLinePath = path.resolve(config.computed.rootFolder, "tests/es6Modules/packagesSizeBaseLine.json");
  12. var es6TestsFolder = path.resolve(config.computed.rootFolder, "tests/es6Modules");
  13. var es6TestsWebpackFile = path.resolve(es6TestsFolder, "webpack.config.js");
  14. /**
  15. * Launches the ES6 modules tests to evaluate the min package size.
  16. */
  17. gulp.task("tests-es6Modules", function(done) {
  18. colorConsole.log("Npm link dependencies");
  19. shelljs.exec("npm link @babylonjs/core", {
  20. async: false,
  21. cwd: es6TestsFolder
  22. });
  23. shelljs.exec("npm link @babylonjs/materials", {
  24. async: false,
  25. cwd: es6TestsFolder
  26. });
  27. colorConsole.log("Bundle test app");
  28. var result = shelljs.exec("webpack", {
  29. async: false,
  30. cwd: es6TestsFolder
  31. });
  32. if (result.code != 0) {
  33. colorConsole.error(result.stdout);
  34. colorConsole.error(result.stderr);
  35. throw "Can not build es6 dev apps."
  36. }
  37. colorConsole.log("Gather output size");
  38. var testsBaseLine = fs.readJSONSync(baseLinePath);
  39. var webpackConfig = require(es6TestsWebpackFile);
  40. for (let entryName in webpackConfig.entry) {
  41. let entry = webpackConfig.entry[entryName];
  42. entry = entry.replace(".ts", ".js");
  43. entry = path.basename(entry);
  44. let outputPath = path.resolve(config.computed.tempFolder, 'testsES6Modules', entry);
  45. let stats = fs.statSync(outputPath);
  46. let size = stats.size;
  47. if (testsBaseLine && testsBaseLine[entryName] && size > (testsBaseLine[entryName] + 10000)) {
  48. colorConsole.error(`New size: ${(""+size).cyan} bytes is bigger than baseline size : ${testsBaseLine[entryName]} bytes on ${entryName}.`);
  49. throw "Bigger than baseline";
  50. }
  51. testsBaseLine[entryName] = size;
  52. }
  53. for (let entryName in testsBaseLine) {
  54. colorConsole.success(`Baseline size for ${entryName.yellow} is ${(""+testsBaseLine[entryName]).cyan} bytes.`);
  55. }
  56. colorConsole.log("Save baseline");
  57. fs.writeJSONSync(baseLinePath, testsBaseLine);
  58. done();
  59. });
  60. /**
  61. * Launches the ES6 modules tests to evaluate the min package size.
  62. */
  63. gulp.task("deployAndTests-es6Modules", gulp.series("localdev-es6", "tests-es6Modules"));
  64. /**
  65. * Launches the ES6 modules tests to evaluate the min package size.
  66. */
  67. gulp.task("buildAndTests-es6Modules", gulp.series("npmPackages-es6", "deployAndTests-es6Modules"));