processEs6Packages.js 4.9 KB

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