桶导出操作工具
任务目标
本 Skill 用于自动生成、优化、修复和检查桶导出文件,确保所有 index 文件都遵循统一的规范:
- 核心原则:所有 index 文件(index.ts / index.js)都必须遵循桶导出规范
- 自动生成符合规范的 index.ts 文件
- 修复不符合规范的导出
- 检查导出规范并生成报告
触发条件
当用户提出以下需求时触发本 Skill:
核心原则:所有 index 文件(index.ts / index.js)都必须遵循桶导出规范。
场景 1:自动生成/优化/修复桶导出文件
- "生成桶导出"
- "优化桶导出"
- "修复桶导出"
- "修复 index.ts"
- "生成 index.ts"
- "更新桶导出"
场景 2:检查导出规范
- "检查导出是否符合规范"
- "检查 index.ts"
- "验证桶导出"
- "检查导出文件"
操作步骤
场景 1:自动生成/优化/修复桶导出文件
步骤 1:确认目标目录
默认锁定当前目录(.)作为操作对象。如果用户指定了目录,则使用指定目录。
步骤 2:扫描当前目录文件
使用系统命令扫描当前目录下的所有文件:
# 列出所有文件
ls -1
# 或扫描特定扩展名
ls -1 *.ts *.tsx *.js *.jsx 2>/dev/null
识别合法的源文件类型:
.ts(TypeScript).tsx(TypeScript + JSX).js(JavaScript).jsx(JavaScript + JSX)
步骤 3:应用过滤规则
排除以下文件类型:
index.ts/index.js(桶导出文件本身)*.test.*(测试文件,如Button.test.tsx)*.spec.*(规格文件,如format.spec.ts)*.stories.*(Storybook 文件,如Button.stories.tsx)*.d.ts(声明文件,如global.d.ts)
步骤 4:应用 _store 特殊规则
判断当前目录是否为 _store 目录:
- 如果是
_store目录:只导出store.ts/store.js和provider.ts/provider.js - 如果是其他目录:导出所有合法文件
步骤 5:生成导出语句
为每个合法模块生成导出语句:
统一格式:
export * from './模块名';
要求:
- 使用
export * from语法 - 使用相对路径
./ - 按字母顺序排序
- 保持文件名大小写与实际文件一致
步骤 6:写入或更新 index.ts
如果 index.ts 不存在: 创建新文件,写入生成的导出语句
如果 index.ts 已存在:
- 读取现有
index.ts内容 - 对比现有导出和新生成的导出
- 如果不一致,更新文件
步骤 7:验证结果
检查以下内容:
- ✅ 所有合法模块已导出
- ✅ 无效/重复导出已删除
- ✅
_store特殊规则已应用(如适用) - ✅ 导出格式统一且按字母排序
- ✅ 文件名大小写与实际文件一致
- ✅ 无"找不到模块"错误
场景 2:检查导出规范
步骤 1:确认目标目录
与用户确认要检查的目录路径。如果未指定,默认使用当前目录(.)。
步骤 2:检查 index.ts 是否存在
使用系统命令检查目标目录下是否存在 index.ts 文件:
ls -la index.ts
- 如果不存在:报告错误,建议先生成
index.ts - 如果存在:继续执行后续检查
步骤 3:读取并解析 index.ts
使用 read_file 工具读取 index.ts 的完整内容,解析每一行导出语句。
步骤 4:扫描目录文件
使用系统命令扫描当前目录下的所有文件:
ls -1 *.ts *.tsx *.js *.jsx 2>/dev/null
识别合法的源文件类型:
.ts(TypeScript).tsx(TypeScript + JSX).js(JavaScript).jsx(JavaScript + JSX)
步骤 5:执行核心检查项
执行以下检查:
检查项 1:文件存在性检查
- 检查
index.ts文件是否存在
检查项 2:导出格式规范检查
- 检查所有导出语句是否使用
export * from格式 - 检查是否有
export default、export { }等不规范格式
检查项 3:排序检查
- 检查导出语句是否按模块名字母顺序排序
检查项 4:重复导出检查
- 检查是否存在重复的模块导出
检查项 5:导出有效性检查
- 检查每个导出的模块是否在目录中实际存在
- 检查文件名大小写是否匹配
检查项 6:排除规则检查
- 检查是否导出了应排除的文件:
*.test.*(测试文件)*.spec.*(规格文件)*.stories.*(Storybook 文件)*.d.ts(声明文件)
检查项 7:_store 特殊规则检查
- 如果目录名为
_store,检查是否只导出store和provider
步骤 6:生成检查报告
按照以下格式生成详细的检查报告:
=== 桶导出规范检查报告 ===
📁 检查目录: <目录路径>
📊 统计信息
- 导出模块总数: X
- 问题总数: X
✅ 检查通过: <数量>
❌ 检查失败: <数量>
---
详细检查结果
1. 文件存在性检查
✅ 通过 / ❌ 失败
说明: <详细说明>
2. 导出格式规范检查
✅ 通过 / ❌ 失败
说明: <详细说明>
问题列表: <如有问题,列出所有问题>
...
---
💡 修复建议
<如有问题,提供修复建议>
🎯 总体评价
✅ 完全符合规范 / ⚠️ 部分符合规范 / ❌ 不符合规范
步骤 7:提供修复建议
对于每个失败的检查项,提供具体的修复建议。
注意事项
核心原则
所有 index 文件(index.ts / index.js)都必须遵循桶导出规范
无论目录类型、文件数量、项目规模如何,只要存在 index 文件,就必须:
- 使用统一格式:
export * from './模块名'; - 按字母顺序排序:导出语句按模块名字母顺序排列
- 排除不应导出的文件:test、spec、stories、d.ts 等文件不导出
- 遵循 _store 特殊规则:如果是
_store目录,只导出store和provider - 确保导出有效性:所有导出的模块必须实际存在
使用原则
- 桶导出文件仅负责导出,不包含任何业务逻辑
- 支持目录路径和文件路径输入,文件路径会自动定位到所在目录
_store目录的桶导出只导出store和provider,其他文件不应暴露- 文档前后描述必须保持一致,避免歧义
- 强制遵循规范:所有 index 文件都必须符合桶导出规范,无例外