processEs6Packages.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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 (es6Config.requiredFiles) {
  28. es6Config.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 es6 required file: ", source.cyan, destination.cyan);
  32. fs.copySync(source, destination);
  33. });
  34. }
  35. if (es6Config.readme) {
  36. let source = path.join(config.computed.rootFolder, es6Config.readme);
  37. let destination = path.join(packagePath, "readme.md");
  38. colorConsole.log(" Copy es6 readme file: ", source.cyan, destination.cyan);
  39. fs.copySync(source, destination);
  40. }
  41. umdPackageJson.name = es6Config.packageName;
  42. umdPackageJson.version = version;
  43. umdPackageJson.main = es6Config.index || "index.js";
  44. umdPackageJson.module = es6Config.index || "index.js";
  45. umdPackageJson.esnext = es6Config.index || "index.js";
  46. umdPackageJson.typings = es6Config.typings || "index.d.ts";
  47. if (es6Config.packagesFiles) {
  48. umdPackageJson.files = es6Config.packagesFiles;
  49. }
  50. else {
  51. let files = getFiles(packagePath)
  52. .map(f => f.replace(packagePath + "/", ""))
  53. .filter(f => f.indexOf("assets/") === -1);
  54. umdPackageJson.files = files;
  55. }
  56. ["dependencies", "peerDependencies", "devDependencies"].forEach(key => {
  57. if (umdPackageJson[key]) {
  58. let dependencies = umdPackageJson[key];
  59. umdPackageJson[key] = {};
  60. Object.keys(dependencies).forEach(packageName => {
  61. if (packageName.indexOf("babylonjs") !== -1) {
  62. colorConsole.log(" Checking Internal Dependency: " + packageName.cyan);
  63. let dependencyName = packageName;
  64. for (var moduleName of modules) {
  65. if (config[moduleName] && config[moduleName].build.umd && config[moduleName].build.umd.packageName === packageName) {
  66. if (config[moduleName].build.es6) {
  67. dependencyName = config[moduleName].build.es6.packageName;
  68. colorConsole.log(" Replace Dependency: " + packageName.cyan + " by " + dependencyName.cyan);
  69. break;
  70. }
  71. }
  72. }
  73. umdPackageJson[key][dependencyName] = version;
  74. } else if (!module.isCore) {
  75. umdPackageJson[key][packageName] = dependencies[packageName];
  76. }
  77. });
  78. }
  79. });
  80. // Inject tslib as a dependency
  81. var mainPackageJSONPath = path.join(config.computed.rootFolder, "package.json");
  82. var mainPackageJSON = fs.readJSONSync(mainPackageJSONPath);
  83. var tslibSemver = mainPackageJSON["devDependencies"]["tslib"];
  84. colorConsole.log(" Adding tslib version: ", tslibSemver.yellow);
  85. umdPackageJson["dependencies"]["tslib"] = tslibSemver;
  86. let packageJSONPath = path.join(packagePath, "package.json");
  87. fs.writeFileSync(packageJSONPath, JSON.stringify(umdPackageJson, null, 4));
  88. publish(version, es6Config.packageName, packagePath, true);
  89. colorConsole.emptyLine();
  90. });
  91. }
  92. module.exports = processEs6Packages;