processEs6Packages.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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 getFiles = require("../helpers/getFiles");
  9. // Global Variables.
  10. const config = require("../../Config/config.js");
  11. const modules = config.modules.concat(config.viewerModules);
  12. /**
  13. * Process ES6 Packages.
  14. */
  15. function processEs6Packages(version) {
  16. config.modules.forEach(moduleName => {
  17. let module = config[moduleName];
  18. let es6Config = module.build.es6;
  19. colorConsole.log("Process " + "ES6".magenta + " Package: " + moduleName.blue.bold);
  20. let distPath = module.computed.distES6Directory;
  21. let packagePath = module.computed.packageES6Directory;
  22. let umdPackageJson = require(module.computed.packageJSONPath);
  23. colorConsole.log(" Cleanup " + packagePath.cyan);
  24. rmDir(packagePath);
  25. colorConsole.log(" Copy Dist folder " + distPath.cyan + " to " + packagePath.cyan);
  26. fs.copySync(distPath, packagePath);
  27. if (module.build.requiredFiles) {
  28. module.build.requiredFiles.forEach(file => {
  29. let source = path.join(config.computed.rootFolder, file);
  30. let destination = path.join(packagePath, path.basename(file));
  31. colorConsole.log(" Copy required file: ", source.cyan, destination.cyan);
  32. fs.copySync(source, destination);
  33. });
  34. }
  35. if (es6Config.requiredFiles) {
  36. es6Config.requiredFiles.forEach(file => {
  37. let source = path.join(config.computed.rootFolder, file);
  38. let destination = path.join(packagePath, path.basename(file));
  39. colorConsole.log(" Copy es6 required file: ", source.cyan, destination.cyan);
  40. fs.copySync(source, destination);
  41. });
  42. }
  43. umdPackageJson.name = es6Config.packageName;
  44. umdPackageJson.version = version;
  45. umdPackageJson.main = es6Config.index || "index.js";
  46. umdPackageJson.module = es6Config.index || "index.js";
  47. umdPackageJson.esnext = es6Config.index || "index.js";
  48. umdPackageJson.typings = es6Config.typings || "index.d.ts";
  49. if (es6Config.pacakagesFiles) {
  50. umdPackageJson.files = es6Config.pacakagesFiles;
  51. }
  52. else {
  53. let files = getFiles(packagePath)
  54. .map(f => f.replace(packagePath + "/", ""))
  55. .filter(f => f.indexOf("assets/") === -1);
  56. umdPackageJson.files = files;
  57. }
  58. ["dependencies", "peerDependencies", "devDependencies"].forEach(key => {
  59. if (umdPackageJson[key]) {
  60. let dependencies = umdPackageJson[key];
  61. umdPackageJson[key] = {};
  62. Object.keys(dependencies).forEach(packageName => {
  63. if (packageName.indexOf("babylonjs") !== -1) {
  64. colorConsole.log(" Checking Internal Dependency: " + packageName.cyan);
  65. let dependencyName = packageName;
  66. for (var moduleName of modules) {
  67. if (config[moduleName] && config[moduleName].build.umd && config[moduleName].build.umd.packageName === packageName) {
  68. if (config[moduleName].build.es6) {
  69. dependencyName = config[moduleName].build.es6.packageName;
  70. colorConsole.log(" Replace Dependency: " + packageName.cyan + " by " + dependencyName.cyan);
  71. break;
  72. }
  73. }
  74. }
  75. umdPackageJson[key][dependencyName] = version;
  76. } else if (!module.isCore) {
  77. umdPackageJson[key][packageName] = dependencies[packageName];
  78. }
  79. });
  80. }
  81. });
  82. // Inject tslib as a dependency
  83. var mainPackageJSONPath = path.join(config.computed.rootFolder, "package.json");
  84. var mainPackageJSON = fs.readJSONSync(mainPackageJSONPath);
  85. var tslibSemver = mainPackageJSON["devDependencies"]["tslib"];
  86. colorConsole.log(" Adding tslib version: ", tslibSemver.yellow);
  87. umdPackageJson["dependencies"]["tslib"] = tslibSemver;
  88. let packageJSONPath = path.join(packagePath, "package.json");
  89. fs.writeFileSync(packageJSONPath, JSON.stringify(umdPackageJson, null, 4));
  90. publish(version, es6Config.packageName, packagePath, true);
  91. colorConsole.emptyLine();
  92. });
  93. }
  94. module.exports = processEs6Packages;