config.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. const path = require("path");
  2. const fs = require("fs-extra");
  3. const config = require("./config.json");
  4. const configFolder = __dirname;
  5. const rootFolder = path.resolve(configFolder, "../../");
  6. const tempFolder = path.resolve(rootFolder, config.build.tempDirectory);
  7. const outputFolder = path.resolve(configFolder, config.build.outputDirectory);
  8. const localDevES6Folder = path.join(tempFolder, config.build.localDevES6FolderName);
  9. const localDevUMDFolder = path.join(tempFolder, config.build.localDevUMDFolderName);
  10. const packageUMDFolder = path.join(tempFolder, config.build.packageUMDFolderName);
  11. const packageUMDDevFolder = path.join(tempFolder, config.build.packageUMDDevFolderName);
  12. const sourceES6Folder = path.join(tempFolder, config.build.sourceES6FolderName);
  13. const distES6Folder = path.join(tempFolder, config.build.distES6FolderName);
  14. const packageES6Folder = path.join(tempFolder, config.build.packageES6FolderName);
  15. const packageES6DevFolder = path.join(tempFolder, config.build.packageES6DevFolderName);
  16. const tempTypingsAMDFileName = config.build.tempTypingsAMDFileName;
  17. const tempTypingsFileName = tempTypingsAMDFileName.replace(".js", ".d.ts");
  18. const tempTypingsAMDFilePath = path.join(tempFolder, tempTypingsAMDFileName);
  19. const tempTypingsFilePath = path.join(tempFolder, tempTypingsFileName);
  20. const tscPath = path.resolve(rootFolder, "node_modules/typescript/bin/tsc");
  21. const sharedUiComponentsFilesGlob = config.build.sharedUiComponentsSrc + "/**/*";
  22. const sharedUiComponentsSrcPath = path.join(rootFolder, config.build.sharedUiComponentsSrc);
  23. const es6SharedUiComponentsSrcPath = path.join(sourceES6Folder, config.build.sharedUiComponentsSrc);
  24. config.computed = {
  25. rootFolder,
  26. tempFolder,
  27. outputFolder,
  28. localDevES6Folder,
  29. localDevUMDFolder,
  30. packageUMDFolder,
  31. packageUMDDevFolder,
  32. sourceES6Folder,
  33. distES6Folder,
  34. packageES6Folder,
  35. packageES6DevFolder,
  36. tempTypingsAMDFileName,
  37. tempTypingsFileName,
  38. tempTypingsAMDFilePath,
  39. tempTypingsFilePath,
  40. tscPath,
  41. sharedUiComponentsFilesGlob,
  42. sharedUiComponentsSrcPath,
  43. es6SharedUiComponentsSrcPath,
  44. }
  45. config.additionalNpmPackages.forEach(package => {
  46. let packagePath = path.join(rootFolder, package.path);
  47. let packageDevDirectory = path.join(localDevUMDFolder, package.name);
  48. package.computed = {
  49. path: packagePath,
  50. packageDevDirectory
  51. };
  52. });
  53. const allModules = [];
  54. config.modules.map(function(module) {
  55. if (allModules.indexOf(module) === -1) {
  56. allModules.push(module);
  57. }
  58. });
  59. config.es6modules.map(function(module) {
  60. if (allModules.indexOf(module) === -1) {
  61. allModules.push(module);
  62. }
  63. });
  64. config.apps.map(function(module) {
  65. if (allModules.indexOf(module) === -1) {
  66. allModules.push(module);
  67. }
  68. });
  69. allModules.map(function(module) {
  70. const settings = config[module];
  71. const mainDirectory = path.resolve(rootFolder, settings.build.mainFolder);
  72. const distFolder = (settings.build.distOutputDirectory !== undefined) ? settings.build.distOutputDirectory : module;
  73. const distDirectory = path.join(outputFolder, distFolder);
  74. const localDevES6Directory = path.join(localDevES6Folder, module);
  75. const localDevUMDDirectory = path.join(localDevUMDFolder, distFolder);
  76. const localDevAppDirectory = path.join(localDevUMDFolder, module);
  77. const packageUMDDirectory = path.join(packageUMDFolder, module);
  78. const packageUMDDevDirectory = path.join(packageUMDDevFolder, module);
  79. const sourceES6Directory = path.join(sourceES6Folder, module);
  80. const distES6Directory = path.join(distES6Folder, module);
  81. const packageES6Directory = path.join(packageES6Folder, module);
  82. const packageES6DevDirectory = path.join(packageES6DevFolder, module);
  83. const webpackConfigPath = path.join(mainDirectory, "webpack.config.js");
  84. const tsConfigPath = path.join(mainDirectory, "tsconfig.json");
  85. const packageJSONPath = settings.build.packageJSON ?
  86. path.join(rootFolder, settings.build.packageJSON) :
  87. path.join(distDirectory, 'package.json');
  88. settings.computed = {
  89. mainDirectory,
  90. distDirectory,
  91. localDevES6Directory,
  92. localDevUMDDirectory,
  93. localDevAppDirectory,
  94. packageUMDDirectory,
  95. packageUMDDevDirectory,
  96. sourceES6Directory,
  97. distES6Directory,
  98. packageES6Directory,
  99. packageES6DevDirectory,
  100. webpackConfigPath,
  101. tsConfigPath,
  102. packageJSONPath
  103. }
  104. // Prevent es6 bundled lib crash.
  105. if (fs.existsSync(tsConfigPath)) {
  106. const tsConfig = require(tsConfigPath);
  107. const srcDirectory = path.resolve(mainDirectory, tsConfig.compilerOptions.rootDir);
  108. const shaderGlob = srcDirectory.replace(/\\/g, "/") + "/**/*.fx";
  109. const shaderTSGlob = [
  110. srcDirectory.replace(/\\/g, "/") + "/**/*.fragment.ts",
  111. srcDirectory.replace(/\\/g, "/") + "/**/*.vertex.ts",
  112. srcDirectory.replace(/\\/g, "/") + "/**/ShadersInclude/*.ts",
  113. ];
  114. const tsGlob = srcDirectory.replace(/\\/g, "/") + "/**/*.ts*";
  115. if (settings.libraries) {
  116. for (let library of settings.libraries) {
  117. if(library.entry){
  118. const entryPath = path.join(srcDirectory, library.entry);
  119. library.computed = {
  120. entryPath
  121. };
  122. }
  123. }
  124. }
  125. settings.computed.srcDirectory = srcDirectory;
  126. settings.computed.shaderGlob = shaderGlob;
  127. settings.computed.shaderTSGlob = shaderTSGlob;
  128. settings.computed.tsGlob = tsGlob;
  129. }
  130. });
  131. module.exports = config;