processUMDPackages.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. // Dependecies.
  2. const fs = require('fs-extra');
  3. const path = require('path');
  4. const rmDir = require("../../NodeHelpers/rmDir");
  5. const colorConsole = require("../../NodeHelpers/colorConsole");
  6. // Helpers.
  7. const publish = require("../helpers/publish");
  8. const processUMDViewer = require("./processUMDViewer");
  9. // Global Variables.
  10. const config = require("../../Config/config.js");
  11. const modules = config.modules.concat(config.viewerModules);
  12. /**
  13. * Process UMD Packages.
  14. */
  15. function processUMDPackages(version) {
  16. modules.forEach(moduleName => {
  17. if (moduleName === "sandbox") {
  18. // Do not publish apps
  19. return;
  20. }
  21. let module = config[moduleName];
  22. colorConsole.log("Process " + "UMD".magenta + " Package: " + moduleName.blue.bold);
  23. if (moduleName === "viewer") {
  24. processUMDViewer(module, version);
  25. }
  26. else {
  27. let outputDirectory = module.build.legacyPackageOutputDirectory;
  28. if (outputDirectory) {
  29. outputDirectory = path.resolve(__dirname, outputDirectory);
  30. }
  31. else {
  32. outputDirectory = module.computed.distDirectory;
  33. }
  34. if (module.build.umd.requiredFiles) {
  35. module.build.umd.requiredFiles.forEach(file => {
  36. let source = path.join(config.computed.rootFolder, file);
  37. let destination = path.join(outputDirectory, path.basename(file));
  38. colorConsole.log(" Copy required file: ", source.cyan, destination.cyan);
  39. fs.copySync(source, destination);
  40. });
  41. }
  42. // Package version
  43. const packageJSONPath = module.computed ?
  44. module.computed.packageJSONPath :
  45. outputDirectory + '/package.json';
  46. let packageJson = require(packageJSONPath);
  47. colorConsole.log(" Update package version to: " + version.green);
  48. packageJson.version = version;
  49. // Package dependencies version
  50. if (module.build.umd.dependencies) {
  51. packageJson.dependencies = module.build.umd.dependencies;
  52. }
  53. // Package dependencies version
  54. if (packageJson.dependencies) {
  55. Object.keys(packageJson.dependencies).forEach(key => {
  56. if (key.indexOf("babylonjs") !== -1) {
  57. packageJson.dependencies[key] = version;
  58. }
  59. });
  60. }
  61. // Package dev dependencies
  62. if (module.build.umd.devDependencies) {
  63. packageJson.devDependencies = module.build.umd.devDependencies;
  64. }
  65. // Typings
  66. if (module.build.umd.typings) {
  67. packageJson.typings = module.build.umd.typings;
  68. }
  69. // Main
  70. if (module.build.umd.index) {
  71. packageJson.main = module.build.umd.index;
  72. packageJson.module = module.build.umd.index;
  73. packageJson.esnext = module.build.umd.index;
  74. }
  75. // Files
  76. if (module.build.umd.packagesFiles) {
  77. packageJson.files = module.build.umd.packagesFiles;
  78. }
  79. // Write to disk output directory
  80. fs.writeFileSync(path.join(outputDirectory, 'package.json'), JSON.stringify(packageJson, null, 4));
  81. if (!module.build.legacyPackageOutputDirectory) {
  82. let packageUMDPath = module.computed.packageUMDDirectory;
  83. colorConsole.log(" Cleanup " + packageUMDPath.cyan);
  84. rmDir(packageUMDPath);
  85. if (module.build.umd.packagesFiles) {
  86. fs.ensureDirSync(packageUMDPath);
  87. for (let file of module.build.umd.packagesFiles.concat(["package.json"])) {
  88. let source = path.join(outputDirectory, file);
  89. let destination = path.join(packageUMDPath, path.basename(file));
  90. colorConsole.log(" Copy Package file: ", source.cyan, destination.cyan);
  91. fs.copyFileSync(source, destination);
  92. }
  93. }
  94. else {
  95. colorConsole.log(" Copy Package folder " + outputDirectory.cyan + " to " + packageUMDPath.cyan);
  96. fs.copySync(outputDirectory, packageUMDPath);
  97. }
  98. publish(version, moduleName, packageUMDPath);
  99. }
  100. else {
  101. publish(version, moduleName, outputDirectory);
  102. }
  103. colorConsole.emptyLine();
  104. }
  105. });
  106. }
  107. module.exports = processUMDPackages;