@bct-common/mom
v0.0.15
Published
MOM (制造运营管理) 页面视图与页面级 i18n,可从宿主工程通过 pnpm workspace 或发布包复用
Downloads
70
Readme
@bct/mom
本包承载 MOM(制造运营管理) 相关的前端页面(views/mom)与 页面级国际化(i18n/pages/mom),与宿主工程通过 pnpm workspace 链接;也可复制目录或发布后给其他 Vue 3 工程复用。
在本仓库中的用法
- 根目录已配置
pnpm-workspace.yaml,将packages/*纳入 workspace。 - 根
package.json依赖"@bct/mom": "workspace:*",pnpm install时会自动链接到packages/mom,无需再手动拷贝源码。 - 宿主工程需保留以下约定(本仓库已写好):
- Vite
resolve.alias:/@/views/mom→packages/mom/views/mom(保证原有/@/views/mom/...引用与后端菜单component路径不变)。 - 动态路由(
src/router/backEnd.ts):除../views/**/*外,增加对../../packages/mom/views/**/*的import.meta.glob,并用normalizeViewsModuleKey将 key 规范为与原先一致的mom/...后缀,以便dynamicImport匹配后端返回的组件路径。 - i18n(
src/i18n/index.ts):合并import.meta.glob('../../packages/mom/i18n/**/*.ts'),与src/i18n下其它页面语言包一起进入messages。 - TypeScript:
tsconfig.json的include包含packages/mom/**/*.vue与**/*.ts,以便类型检查与 IDE 跳转。
- Vite
在其它项目中复用
宿主需与本项目一样使用 /@/ 指向自身 src(axios、api、stores、utils 等仍从宿主解析)。MOM 页面内的业务代码大量依赖该别名。
方式 A:pnpm workspace(推荐,同 monorepo)
在宿主仓库根目录:
# pnpm-workspace.yaml
packages:
- 'packages/*'将本包目录放入宿主 packages/mom(或子模块 / git subtree 同步同路径),在宿主 package.json 中增加:
{
"dependencies": {
"@bct/mom": "workspace:*"
}
}然后在宿主 Vite、backEnd 动态 glob、i18n 合并、tsconfig include 四处按上文「在本仓库中的用法」对齐配置即可。
方式 B:发布到 npm / 私有 registry
- 将
packages/mom/package.json中name、version调整为你的 scope(例如@your-org/mom),按需设置"private": false后执行发布流程。 - 在宿主中
pnpm add @your-org/mom,并把 Vite 中/@/views/mom别名指向node_modules/@your-org/mom/views/mom(或该包exports所暴露的目录)。 - 动态路由 glob 改为指向
node_modules/@your-org/mom/views/**/*,并在normalizeViewsModuleKey中增加对路径片段packages/mom/views/的识别(与本仓库一致;注意不要用前导/packages/,否则匹配不到 Vite 返回的../../packages/...形式 key)。
方式 C:file / link 本地路径
"@bct/mom": "file:../01-Client-QY/packages/mom"别名仍指向该包内 views/mom 物理路径即可。
目录说明
| 路径 | 说明 |
|------|------|
| views/mom/** | 原 src/views/mom,组件路径仍以 mom/... 为后缀供后端路由匹配 |
| i18n/pages/mom/** | 原 src/i18n/pages/mom,随宿主 i18n 初始化合并 |
维护注意
- 新增仅 MOM 使用的页面级文案时,请在本包
i18n下维护,避免与宿主src/i18n/pages键名冲突。 - 若后端菜单
component字段规则变更,需同步检查dynamicImport的匹配逻辑。
