processUMDPackages.js 4.7 KB

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