关于 jscodeshift
面向 AI Agent 和大模型的 jscodeshift codemod 开发实践指南。分级规则涵盖解析器配置、AST 遍历与转换、代码生成、测试和运行器优化。
主要功能
- 01八类共 40 条规则
- 02解析器配置与 AST 遍历
- 03节点筛选和转换模式
- 04代码生成与风格保留
- 05测试和运行器优化
适用场景
- 01编写代码迁移 codemod
- 02排查转换失败
- 03测试转换的边界情况
- 04检查 codemod 的正确性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill jscodeshift安装后在 Claude Code 中输入/jscodeshift确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdadvanced-compose-transforms.mdadvanced-custom-collections.mdadvanced-multi-file-state.mdadvanced-scope-analysis.mdcodegen-preserve-style.mdcodegen-print-width.mdcodegen-template-literals.mdcodegen-tosource-options.mdfilter-computed-properties.mdfilter-import-binding.mdfilter-jsx-context.mdfilter-nullish-checks.mdfilter-path-parent-check.mdparser-astexplorer-match.mdparser-babel5-compat.mdparser-export-declaration.mdparser-flow-annotation.mdparser-typescript-config.mdrunner-batch-processing.mdrunner-extensions-filter.mdrunner-ignore-patterns.mdrunner-parallel-workers.mdrunner-verbose-output.mdtest-dry-run-exploration.mdtest-fixture-files.md详细介绍
Facebook/Meta jscodeshift 最佳实践
面向 AI Agent 和大模型的 jscodeshift codemod 开发综合最佳实践指南。包含 8 个类别中的 40 条规则,按影响程度排序,从关键项(解析器配置、AST 遍历)到渐进优化项(高级模式)。每条规则都包含详细说明、真实示例和具体影响指标。
适用场景
在以下情况下,请参考这些指南:
- 为代码迁移编写新的 jscodeshift codemod
- 调试转换失败或异常行为
- 优化 codemod 在大型代码库上的性能
- 检查 codemod 代码的正确性
- 测试 codemod 的边缘情况和回归问题
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 解析器配置 | CRITICAL | parser- |
| 2 | AST 遍历模式 | CRITICAL | traverse- |
| 3 | 节点筛选 | HIGH | filter- |
| 4 | AST 转换 | HIGH | transform- |
| 5 | 代码生成 | MEDIUM | codegen- |
| 6 | 测试策略 | MEDIUM | test- |
| 7 | Runner 优化 | LOW-MEDIUM | runner- |
| 8 | 高级模式 | LOW | advanced- |
快速参考
1. 解析器配置(CRITICAL)
parser-typescript-config- 为 TypeScript 文件使用正确的解析器parser-flow-annotation- 为 Flow 类型代码使用 Flow 解析器parser-babel5-compat- 避免在现代语法中使用默认的 babel5compatparser-export-declaration- 从转换模块导出解析器parser-astexplorer-match- 使 AST Explorer 解析器与 jscodeshift 解析器匹配
2. AST 遍历模式(CRITICAL)
traverse-find-specific-type- 在 find() 调用中使用特定节点类型traverse-two-pass-pattern- 对复杂转换使用两遍模式traverse-early-return- 无需转换时提前返回traverse-find-filter-pattern- 使用带筛选对象的 find(),而不是 filter() 链traverse-closest-scope- 对作用域感知型转换使用 closestScope()traverse-avoid-repeated-find- 避免对同一节点类型重复调用 find()
3. 节点筛选(HIGH)
filter-path-parent-check- 转换前检查父路径filter-import-binding- 跟踪导入绑定以准确检测使用情况filter-nullish-checks- 属性访问前添加空值检查filter-jsx-context- 区分 JSX 上下文和普通 JavaScriptfilter-computed-properties- 在筛选器中处理计算属性键
4. AST 转换(HIGH)
transform-builder-api- 使用构建器 API 创建 AST 节点transform-replacewith-callback- 使用 replaceWith 回调执行上下文感知型转换transform-insert-import- 在正确位置插入导入语句transform-preserve-comments- 替换节点时保留注释transform-renameto- 使用 renameTo 重命名变量transform-remove-unused-imports- 转换后移除未使用的导入
5. 代码生成(中)
codegen-tosource-options- 配置 toSource(),以保持格式一致codegen-preserve-style- 使用 recast 保留原始代码风格codegen-template-literals- 使用模板字面量创建复杂节点codegen-print-width- 为长行设置合适的打印宽度
6. 测试策略(中)
test-inline-snapshots- 使用 defineInlineTest 验证输入和输出test-negative-cases- 优先编写负向测试用例test-dry-run-exploration- 使用 dry run 模式探索代码库test-fixture-files- 使用 fixture 文件处理复杂测试用例test-parse-errors- 测试解析错误处理
7. 运行器优化(低至中)
runner-parallel-workers- 配置工作线程数量,以实现最佳并行处理runner-ignore-patterns- 使用忽略模式跳过非源文件runner-extensions-filter- 按扩展名筛选文件runner-batch-processing- 分批处理大型代码库runner-verbose-output- 使用详细输出调试转换
8. 高级模式(低)
advanced-compose-transforms- 将多个转换组合成流水线advanced-scope-analysis- 使用作用域分析安全地转换变量advanced-multi-file-state- 通过选项在多个文件间共享状态advanced-custom-collections- 创建自定义集合方法
使用方法
阅读各个参考文件,了解详细说明和代码示例:
完整汇编文档
如需查看包含所有规则的完整综合文档,请参阅 AGENTS.md。
参考文件
| 文件 | 描述 |
|---|---|
| AGENTS.md | 包含所有规则的完整汇编指南 |
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown