vite.shell-aliases.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /**
  2. * 业务项目仅使用私有 npm 中的 @fskj-admin/shell,禁止回退到本机 platform-shell 源码路径。
  3. * 框架源码仓库:/Users/qiyuan/workspace_front/front-platform-core_3.0.1-Beta(packages/platform-shell)。
  4. *
  5. * 登录/首页/defaultSetting 等留在本仓 src/,其余平台能力走 npm shell。
  6. */
  7. import path from 'node:path'
  8. import {
  9. createEmptyProjectShellAliases,
  10. type CreateEmptyProjectShellAliasesOptions
  11. } from '@fskj-admin/shell/vite'
  12. export function createProjectShellAliases(options: CreateEmptyProjectShellAliasesOptions = {}) {
  13. const root = options.projectRoot ?? process.cwd()
  14. const src = path.join(root, 'src')
  15. const npmShellSrc = path.join(root, 'node_modules/@fskj-admin/shell/src')
  16. /** 强制 setAppRouter / getAppRouter 走同一物理文件,避免子路径与 barrel 双实例 */
  17. const appRouterHolder = path.join(npmShellSrc, 'router/appRouterHolder.ts')
  18. const createAppRouterModule = path.join(npmShellSrc, 'router/createAppRouter.ts')
  19. const businessRouterExtension = path.join(npmShellSrc, 'router/businessRouterExtension.ts')
  20. const homeExtension = path.join(npmShellSrc, 'home/homeExtension.ts')
  21. const createAdminAppModule = path.join(npmShellSrc, 'bootstrap/createAdminApp.ts')
  22. const platformOpsRouterExtension = path.join(npmShellSrc, 'router/platformOpsRouterExtension.ts')
  23. const platformOpsRegister = path.join(npmShellSrc, 'platformops/register.ts')
  24. const platformOpsEssentialRoutes = path.join(npmShellSrc, 'platformops/essentialRoutes.ts')
  25. const base = createEmptyProjectShellAliases({
  26. localShellCandidates: false,
  27. ...options
  28. })
  29. /** 商户登录/注册等业务页须在通用 @shell alias 之前匹配 */
  30. const merchantOverrides = [
  31. {
  32. find: '@shell/router/appRouterHolder',
  33. replacement: appRouterHolder
  34. },
  35. {
  36. find: '@fskj-admin/shell/router/appRouterHolder',
  37. replacement: appRouterHolder
  38. },
  39. {
  40. find: '@shell/router/createAppRouter',
  41. replacement: createAppRouterModule
  42. },
  43. {
  44. find: '@fskj-admin/shell/router/createAppRouter',
  45. replacement: createAppRouterModule
  46. },
  47. {
  48. find: '@shell/router/businessRouterExtension',
  49. replacement: businessRouterExtension
  50. },
  51. {
  52. find: '@fskj-admin/shell/router/businessRouterExtension',
  53. replacement: businessRouterExtension
  54. },
  55. {
  56. find: '@shell/home/homeExtension',
  57. replacement: homeExtension
  58. },
  59. {
  60. find: '@fskj-admin/shell/home/homeExtension',
  61. replacement: homeExtension
  62. },
  63. {
  64. find: '@shell/bootstrap/createAdminApp',
  65. replacement: createAdminAppModule
  66. },
  67. {
  68. find: '@fskj-admin/shell/bootstrap/createAdminApp',
  69. replacement: createAdminAppModule
  70. },
  71. {
  72. find: '@shell/router/platformOpsRouterExtension',
  73. replacement: platformOpsRouterExtension
  74. },
  75. {
  76. find: '@fskj-admin/shell/router/platformOpsRouterExtension',
  77. replacement: platformOpsRouterExtension
  78. },
  79. {
  80. find: '@shell/platformops/register',
  81. replacement: platformOpsRegister
  82. },
  83. {
  84. find: '@fskj-admin/shell/platformops/register',
  85. replacement: platformOpsRegister
  86. },
  87. {
  88. find: '@shell/platformops/essentialRoutes',
  89. replacement: platformOpsEssentialRoutes
  90. },
  91. {
  92. find: '@fskj-admin/shell/platformops/essentialRoutes',
  93. replacement: platformOpsEssentialRoutes
  94. },
  95. {
  96. find: '@shell/views/user/MerchantLogin.vue',
  97. replacement: path.join(src, 'views/user/MerchantLogin.vue')
  98. },
  99. {
  100. find: '@shell/views/user/MerchantRegister.vue',
  101. replacement: path.join(src, 'views/user/MerchantRegister.vue')
  102. },
  103. {
  104. find: '@shell/views/miniprogram/HomeQuickGrid.vue',
  105. replacement: path.join(src, 'business/views/miniprogram/HomeQuickGrid.vue')
  106. },
  107. {
  108. find: '@/api/setting/homeQuickGrid',
  109. replacement: path.join(src, 'business/api/setting/homeQuickGrid.ts')
  110. },
  111. {
  112. find: path.join(npmShellSrc, 'api/setting/homeQuickGrid.ts'),
  113. replacement: path.join(src, 'business/api/setting/homeQuickGrid.ts')
  114. },
  115. {
  116. find: '@/utils/bizSceneExt',
  117. replacement: path.join(src, 'utils/bizSceneExt.ts')
  118. },
  119. {
  120. find: '@/components/layout/GlobalMainNav.vue',
  121. replacement: path.join(src, 'components/layout/GlobalMainNav.vue')
  122. },
  123. {
  124. find: '@/utils/formatMainNavLabel',
  125. replacement: path.join(src, 'utils/formatMainNavLabel.ts')
  126. }
  127. ]
  128. return [...merchantOverrides, ...base]
  129. }
  130. /** 组件扫描目录:强制 npm 包,不探测 TravelWebFront 等本地 platform-shell */
  131. export function resolveProjectShellComponentsDir(projectRoot?: string) {
  132. const root = projectRoot ?? process.cwd()
  133. return path.join(root, 'node_modules/@fskj-admin/shell/src/components')
  134. }
  135. export type { CreateEmptyProjectShellAliasesOptions as CreateShellAliasesOptions }