VS Code Extensions
ModuleCompass

ModuleCompass

by meatou

以当前目录为范围,快速定位模块内的类 / 代码块 / #region 并跳转,支持模糊搜索;附带代码片段管理

Downloads

2

Rating

(0)

Version

0.7.0

Last updated

Jul 31, 2026

中台开发辅助工具:以当前目录为范围,快速定位模块内部结构。

  • 当前目录代码块:侧边栏列出当前文件所在目录的文件,展开文件显示大纲——顶层符号(class / interface / enum / function / type / const 函数)与 #region 代码块,Vue 为 <template>/<script>/<style> 块,点击跳转;支持模糊搜索、批量展开/收起
  • 函数流步骤// #steps 名称 罩在数组字面量上方,大纲里展开成一组步骤,点击跳到对应那一行(见下方「函数流步骤」)
  • 业务名标注:文件名是编号时(210302.service.ts),从文件里的 new Logger(['云财务', '天财供应链', '门店采购入库', '服务']) 提取业务名显示在文件名右侧,搜索也能按业务名匹配
  • 按业务名打开文件:面板标题栏最左的罗盘图标(或命令面板「模块罗盘:按业务名打开文件」),列出全工作区所有带业务名的文件,扁平一行一个、按目录分段,输入 开票730102 都能命中
  • 代码片段:保存常用代码片段(支持分组),单击复制到剪贴板

代码片段随 Settings Sync 同步到你的 Microsoft / GitHub 账号,请勿在片段里保存 token、密码、连接串等敏感信息。

使用

  • 活动栏点击"模块罗盘"图标
  • 面板顶部两行:标题行右侧是当前所属项目的完整路径,下面一行是当前目录 / 文件数 / 搜索状态
  • 列表范围(工具栏最右侧按钮,按工作区记住):
    • 默认 只显示已打开的文件:当前目录里已在标签栏打开的文件,不限扩展名(.md / .scss 里的 #region 同样能导航)
    • 点「文件夹」按钮切到 显示目录内全部文件:当前目录下的 .ts/.tsx/.js/.jsx/.vue,可以浏览还没打开的文件
  • 左键点文件名:切换展开 / 收起(收起时打开并展开,展开时收起);也可右键菜单「收起」
  • 搜索(工具栏放大镜):在当前目录内模糊匹配文件名 / 业务名 / 代码块名,例如 usrsvc 命中 UserService
  • 按业务名打开文件(工具栏最左罗盘图标):全工作区范围,跟上面那个搜索不是一回事
  • 资源管理器右键目录 →「在模块罗盘中显示」:把面板指到那个目录(会自动切到"全部文件");激活任意编辑器后恢复跟随
  • 代码块写法:// #region 名称 ... // #endregion(也支持 <!-- -->/* */ 注释写法)

函数流步骤

一个数组把流程列出来的写法(步骤列表),大纲里以前只能看到外层 #region。在数组上方加一行标记就能展开:

// #steps 对账流程
const 步骤列表: Step[] = [
    { 步骤名: '查询订单发票列表', 执行: 'S210103Service.查询订单发票列表' },
    { 步骤名: '查询物料关系数据', 执行: 'S210103Service.查询物料关系数据' },
]

大纲里显示成:

▾ 订单发票对账列表(10004)
  ▾ 对账流程                L18 - L29
      查询订单发票列表        查询订单发票列表 · L20
      查询物料关系数据        查询物料关系数据 · L21
  • 标记只写一次,步骤名不用重复写——子节点从数组元素里抽
  • 标记是开关:没有 #steps 的数组一律不解析,不会误伤普通数组
  • 数组必须从标记之后的第一个代码行开起(空行、纯注释行会跳过)
  • 右侧灰字取 执行 的方法名(S210103Service.查询订单发票列表查询订单发票列表,前缀整组都一样,去掉更省横向空间);取不到就只显示行号
  • 一个步骤拆成多行写也认;// #steps 后面不写名称显示为 (未命名)
  • 注释写法跟 #region 一致,/* #steps 名称 */ 也认。不需要 #endsteps,范围按数组的方括号配对算
  • 步骤名参与搜索,跟代码块名一样能模糊匹配

三个词都能改(设置里搜 模块罗盘):

设置项 默认值 作用
regionNavigator.stepsMarker #steps 标记词,可用中文(#流程
regionNavigator.stepNameField 步骤名 节点名取哪个字段
regionNavigator.stepDescField 执行 右侧说明取哪个字段

业务名约定

插件只认这个形状,方括号里写什么完全由你决定:

private logger: Logger = new Logger(`${['云开票', '开票管理', '账单开票', '服务'].join('-')}`);
// → 业务名:云开票-开票管理-账单开票
  • 段数任意;末尾的 '服务' 会被去掉
  • 不裹模板字符串直接写 new Logger(['云开票', '账单开票']) 也认
  • 必须是 new Logger( + 数组字面量:传变量、带 ... 展开、字符串拼接都读不到
  • 只扫文件前 60 行
  • 不按文件名后缀筛。.service.ts / .platform.ts / .controller.ts / .task.ts 一视同仁,扫全部 .ts 后按有没有业务名收——新增后缀不用改插件
  • 目录分段的组名 = 组内成员业务名第一段全部一致时的那一段。不一致就不显示组名(说明目录里有不合约定的文件)
  • 命令面板「模块罗盘:列出待补业务名的文件」列出有导出类、也提到了 Logger、但没解析出业务名的文件

绑快捷键

按业务名打开文件 默认不占键位。要绑的话在 keybindings.json 里加:

{ "key": "ctrl+alt+p", "command": "regionNavigator.openByLabel" }

Related extensions