pkg-struct.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const path = require('path')
  2. const { existsSync } = require('fs')
  3. const { buildPkgJsonObj } = require('./pkg-json-obj')
  4. exports.pkgStructs = buildPkgStructs()
  5. function buildPkgStructs() {
  6. let tsConfig = require(path.join(process.cwd(), 'tsconfig.json'))
  7. let tsPaths = tsConfig.compilerOptions.paths
  8. let structs = []
  9. for (let entry in tsPaths) {
  10. let path = tsPaths[entry][0]
  11. if (path && path.match(/\/main$/)) {
  12. let struct = buildPkgStruct(entry, path)
  13. if (struct) {
  14. structs.push(struct)
  15. }
  16. }
  17. }
  18. return structs
  19. }
  20. function buildPkgStruct(pkgName, mainPath) {
  21. let isPremium = mainPath.indexOf('packages-premium/') !== -1
  22. let dir = path.dirname(path.dirname(mainPath))
  23. let jsonPath = path.join(process.cwd(), dir, 'package.json')
  24. if (existsSync(jsonPath)) {
  25. let origJsonObj = require(jsonPath) // not yet combined with more root-level json
  26. let browserGlobal = origJsonObj.browserGlobal
  27. if (!browserGlobal) {
  28. throw new Error('Must specify browserGlobal in', jsonPath)
  29. } else {
  30. return {
  31. name: pkgName,
  32. isPremium,
  33. dir, // relative to project root
  34. srcDir: path.join(dir, 'src'), // relative to project root
  35. distDir: path.join(dir, 'dist'), // relative to project root
  36. jsonObj: buildPkgJsonObj(origJsonObj, isPremium),
  37. browserGlobal
  38. }
  39. }
  40. }
  41. }