config.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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.tempTypingsAMDFileName;
  17. const tempTypingsFileName = tempTypingsAMDFileName.replace(".js", ".d.ts");
  18. const tempTypingsAMDFilePath = path.join(tempFolder, tempTypingsAMDFileName);
  19. const tempTypingsFilePath = path.join(tempFolder, tempTypingsFileName);
  20. config.computed = {
  21. rootFolder,
  22. tempFolder,
  23. outputFolder,
  24. localDevES6Folder,
  25. localDevUMDFolder,
  26. packageUMDFolder,
  27. packageUMDDevFolder,
  28. sourceES6Folder,
  29. distES6Folder,
  30. packageES6Folder,
  31. packageES6DevFolder,
  32. tempTypingsAMDFileName,
  33. tempTypingsFileName,
  34. tempTypingsAMDFilePath,
  35. tempTypingsFilePath
  36. }
  37. config.additionalNpmPackages.forEach(package => {
  38. let packagePath = path.join(rootFolder, package.path);
  39. package.computed = {
  40. path: packagePath
  41. };
  42. });
  43. config.modules.map(function(module) {
  44. const settings = config[module];
  45. const mainDirectory = path.resolve(rootFolder, settings.build.mainFolder);
  46. const distFolder = (settings.build.distOutputDirectory !== undefined) ? settings.build.distOutputDirectory : module;
  47. const distDirectory = path.join(outputFolder, distFolder);
  48. const localDevES6Directory = path.join(localDevES6Folder, module);
  49. const localDevUMDDirectory = path.join(localDevUMDFolder, distFolder);
  50. const packageUMDDirectory = path.join(packageUMDFolder, module);
  51. const packageUMDDevDirectory = path.join(packageUMDDevFolder, module);
  52. const sourceES6Directory = path.join(sourceES6Folder, module);
  53. const distES6Directory = path.join(distES6Folder, module);
  54. const packageES6Directory = path.join(packageES6Folder, module);
  55. const packageES6DevDirectory = path.join(packageES6DevFolder, module);
  56. const webpackConfigPath = path.join(mainDirectory, "webpack.config.js");
  57. const tsConfigPath = path.join(mainDirectory, "tsconfig.json");
  58. const packageJSONPath = settings.build.packageJSON ?
  59. path.join(rootFolder, settings.build.packageJSON) :
  60. path.join(distDirectory, 'package.json');
  61. settings.computed = {
  62. mainDirectory,
  63. distDirectory,
  64. localDevES6Directory,
  65. localDevUMDDirectory,
  66. packageUMDDirectory,
  67. packageUMDDevDirectory,
  68. sourceES6Directory,
  69. distES6Directory,
  70. packageES6Directory,
  71. packageES6DevDirectory,
  72. webpackConfigPath,
  73. tsConfigPath,
  74. packageJSONPath
  75. }
  76. // Prevent es6 bundled lib crash.
  77. if (fs.existsSync(tsConfigPath)) {
  78. const tsConfig = require(tsConfigPath);
  79. const srcDirectory = path.resolve(mainDirectory, tsConfig.compilerOptions.rootDir);
  80. const shaderGlob = srcDirectory.replace(/\\/g, "/") + "/**/*.fx";
  81. const shaderTSGlob = [
  82. srcDirectory.replace(/\\/g, "/") + "/**/*.fragment.ts",
  83. srcDirectory.replace(/\\/g, "/") + "/**/*.vertex.ts",
  84. srcDirectory.replace(/\\/g, "/") + "/**/ShadersInclude/*.ts",
  85. ];
  86. for (let library of settings.libraries) {
  87. const entryPath = path.join(srcDirectory, library.entry);
  88. library.computed = {
  89. entryPath
  90. };
  91. }
  92. settings.computed.srcDirectory = srcDirectory;
  93. settings.computed.shaderGlob = shaderGlob;
  94. settings.computed.shaderTSGlob = shaderTSGlob;
  95. }
  96. });
  97. module.exports = config;