用途:在 ioredis 中新增缺失的 Redis 命令、修正已有命令签名、修改返回类型,或补充命令相关的 Buffer、回调、管道与转换器行为覆盖。
主要能力与涉及文件:命令元数据来自 @ioredis/commands;生成器入口为 bin/index.js,输出 lib/utils/RedisCommander.ts(生成文件,不应手改)。返回类型映射在 bin/returnTypes.js,参数形状覆盖在 bin/argumentTypes.js,全局参数类型映射在 bin/typeMaps.js,手动重载在 bin/overrides.js,参数重排在 bin/sortArguments.js。转换器注册在 lib/Command.ts,仅在需要转换器行为时改动。测试位于 test/functional/commands/<command>.ts、test/functional/transformer.ts、test/typing/commands.test-d.ts 与 test/typing/transformers.test-d.ts。
使用方式:先确认命令存在于 @ioredis/commands,否则需先更新元数据包;命令键统一小写,处理别名与子命令,确认所需 Redis 版本。优先在 bin/returnTypes.js 修正返回类型,简单固定回复用字符串类型,依赖子命令或选项时用函数类型,可复用 hasToken 与 matchSubcommand。仅命令级参数覆盖用 argumentTypes.js,影响多命令的类别修正用 typeMaps.js,生成重载无法表达时用 overrides.js。改完运行 node bin/index.js 重新生成,检查 diff 中的普通方法、回调重载、管道/事务形状与 Buffer 变体。功能测试使用 import Redis from "../../../lib/Redis"; 与 chai 的 expect,采用 beforeEach 创建实例、afterEach 断开;版本受限测试从 ../../helpers/util 导入 isRedisVersionLowerThan 并用 function 语法调用 this.skip()。类型测试在构建后运行 npx tsd --files test/typing/commands.test-d.ts。
适用场景:为 ioredis 添加或修正 Redis 命令支持、返回类型、参数形状与类型声明。
限制:若命令不在 @ioredis/commands 中则无法生成类型支持;生成文件不得手改;Redis 访问受沙箱限制时应申请权限;文档仅在公开签名或示例受影响时更新。具体命令清单与验证结果需按实际改动报告,资料未提供固定命令列表。