processEs6Packages.js 5.6 KB

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