processEs6Packages.js 5.4 KB

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