桶导出操作工具
任务目标
本 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 文件都必须符合桶导出规范,无例外