团队统一模块命名与路径别名规则的核心是降低认知摩擦,关键在收敛、显式、可验证:模块按职责命名(小驼峰/大驼峰)、目录名与模块名一致;路径别名仅保留@/、@/assets/、@/types/三类并三端同步配置;通过ESLint、CI检查、脚手架初始化和定期清理保障落地。

团队统一模块命名与路径别名规则,核心不是定一堆条文,而是让开发者写代码时“不假思索就能对”,减少路径跳转、重命名、导入报错等认知摩擦。关键在收敛、显式、可验证三点。
模块命名:按职责而非位置,用语义化小驼峰
模块文件名应反映其功能本质,而非所在层级或技术类型。避免utils.js、index.js这类泛称,改用具体动词+名词组合:
- 导出函数为主:如formatDate.js、debounceClick.js,名字即行为
- 导出类或组件:用大驼峰,如UserProfileCard.vue、ApiRequestClient.js
- 避免同名冲突:同一业务域下不重复使用helper、tool等模糊后缀;可用authTokenManager.js代替tokenHelper.js
- 目录名与模块名一致:/services/userService.js → 模块名就是userService,不额外加index或default
路径别名:只设高频、跨层、稳定路径,严格同步三方配置
别名不是越多越好,而是聚焦真正需要“跳脱相对路径”的几个核心入口。推荐仅保留以下三类:
- @/ → src/(所有源码根目录)
- @/assets/ → src/assets/(静态资源)
- @/types/ → src/types/(TS 类型定义)
其他路径如@/hooks或@/layouts,若项目中实际引用频次低、层级浅,建议直接用相对路径,避免记忆负担。所有别名必须同时配置三处:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- Vite/Webpack 的 resolve.alias(构建时生效)
- tsconfig.json 的 compilerOptions.baseUrl + paths(TS 类型检查和 IDE 跳转)
- VS Code 的 jsconfig.json 或 tsconfig.json 所在目录需被正确识别(确保自动导入不报红)
落地保障:用工具卡点,不靠自觉
规范写进文档没人看,嵌入流程才真正生效:
- ESLint 插件校验:启用import/no-unresolved和import/no-absolute-path,禁止出现../../../或未声明别名的@/xxx
- CI 检查别名一致性:脚本比对vite.config.ts中的 alias 与tsconfig.json的 paths 是否完全匹配,不一致则阻断 PR 合并
- 新成员初始化脚手架内置规则:用 pnpm create 或自建模板生成器,一键拉取含标准别名配置、目录结构、ESLint 规则的初始项目
- 定期清理冗余别名:每季度扫描grep -r "@/" src/ | wc -l,若某个别名引用数低于 5 次,发起讨论是否移除
例外处理:Node 运行时别名要单独兜底
前端构建工具的别名在 Node 直接运行时不生效(如 SSR、CLI 脚本),这时不能靠“大家注意用相对路径”来规避:
- SSR 或本地 Node 脚本中,统一用ts-node -r tsconfig-paths/register启动
- package.json 的exports字段作为兜底方案,把高频模块注册为包名导入(如"my-utils" → "./src/utils/index.js"),兼顾 ESM/CJS 环境
- 禁止在 Node 环境中动态拼接__dirname + '/../../',一律封装成resolvePath('src/utils')工具函数并复用

















