@ coderabbitai/ 配置
类型、程序作者 代码
配置 - 写入您的 .coderabbit.config.ts 以类型脚本代替
.coderabbit.yaml,并自动完成编辑器和作者时间类型检查.
承诺 .coderabbit.yaml 总是优先于
.coderabbit.config.ts。 。 。 .
安装
npm install --save-dev @coderabbitai/config
使用量
创建一个 .coderabbit.config.ts 位于您的仓库根部 :
import { defineConfig } from "@coderabbitai/config"
export default defineConfig({
language: "en-US",
reviews: { profile: "chill" },
})
defineConfig 也接受接收仓库/组织的工厂 /
调取请求和引用上下文,所以您的配置可以适应 地点, (中文(简体) ), 什麽, (中文(简体) ),
财务报告和审定财务报表 怎么样 它运行着——一个静态的YAML文件不能做的东西:
import { defineConfig } from "@coderabbitai/config"
export default defineConfig(ctx => ({
reviews: {
// Keep local CLI reviews focused; use normal policy in the repository.
profile: ctx.invocation.source === "cli" ? "chill" : "assertive",
},
}))
ctx.invocation.source 实值 "cli" 当地 coderabbit review 财务报告和审定财务报表
"review" 通过单一市场管理提供商或另一审查启动的审查
客户端.
对于拉动请求和合并请求, ctx.pr.authorGroups 揭露
作者的提供者组,而不将特定提供者对象放在您的
配置 :
import { defineConfig } from "@coderabbitai/config"
export default defineConfig(ctx => {
const groups =
ctx.pr?.authorGroups.status === "resolved" ? ctx.pr.authorGroups.groups : []
const isUsaPlatform = groups.some(
group => group.fullPath === "acme/platform-usa",
)
return {
language: isUsaPlatform ? "en-US" : "ko-KR",
}
})
每个组都有稳定的供应商 id,简称 slug,以及合格供应商
fullPath。 。 。 . status 为:
"resolved": 提供者退回完整的可见会员名单;groups也许是空的."unavailable": 权限、 超时、 提供者失败或安全约束 阻止了一个完整的检查.groups已空出,不得视为 证明提交人不属于任何团体."unsupported": 当前提供者或引用没有作者组 解决者。 目前,地方CLI审查使用这种状态."stale": 预留未来缓存的成员结果.
GitHub和GitHub Entertainment解决组织团队. GitLab.com 和 (英语) 自行管理的 GitLab 解决 CodeRabbit 可见的直接组成员; GitLab的会籍不包括继承或共享的团体会籍.
仓库主题和 GitHub 自定义属性在 ctx.repo数字 :
import { defineConfig } from "@coderabbitai/config"
export default defineConfig(ctx => {
const topics =
ctx.repo.topics.status === "resolved" ? ctx.repo.topics.names : []
const properties =
ctx.repo.customProperties.status === "resolved"
? ctx.repo.customProperties.values
: {}
const isCriticalService =
topics.includes("critical") && properties.repo_type === "service"
return {
reviews: {
profile: isCriticalService ? "assertive" : "chill",
},
}
})
topics.names 是一个排序列表. customProperties.values 由
属性名称; 每个值为字符串、字符串数组,或 null。两个对象
使用同样的 resolved, (中文(简体) ), unavailable, (中文(简体) ), unsupported,并保留 stale
状态为作者组。 解析的收藏可能为空 。 无法获取
收藏是未知的,不能作为权威空来对待.
GitHub 提供话题和自定义属性. 其他提供者和当地的CLI
审查报告 unsupported; GitHub 失败和不支持的 GitHub
企业版本报告 unavailable这些检查使用了安装的
已存在的元数据读取权限, 并仅在 TypeScript 配置时运行
评估.
ctx.pr.changedFiles 显示在
拖动请求或合并请求 diff。 这使得选择审查成为可能
基于变化涉及的领域的政策:
import { defineConfig } from "@coderabbitai/config"
export default defineConfig(ctx => {
const paths =
ctx.pr?.changedFiles.status === "resolved" ? ctx.pr.changedFiles.paths : []
const touchesInfrastructure = paths.some(
path => path.startsWith("terraform/") || path.endsWith(".tf"),
)
return {
reviews: {
profile: touchesInfrastructure ? "assertive" : "chill",
},
}
})
状态是 "resolved" 仅当 CodeRabbit 拥有完整的路径列表时.
供应商错误、超时、修改或安全限制生产
"unavailable" 带有空列表; 没有完整目录的平台
生产 "unsupported"。从不将这两个状态解释为没有文件的证据
已更改。 重命名既包括上一条路径,也包括当前路径,这样政策就可以
检测进入或离开保护区的文件.
构造配置
mergeConfig 深相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相
(掌声) includeRemote 从您手中取出共享的碎片
联合国 coderabbit 默认寄存器 :
import { defineConfig, mergeConfig, includeRemote } from "@coderabbitai/config"
const orgBase = includeRemote({ path: "base.ts" })
const platformBase = includeRemote({
repo: "acme/platform-config",
path: "reviews/base.ts",
ref: "v1",
})
export default defineConfig(
mergeConfig(orgBase, platformBase, { reviews: { profile: "assertive" } }),
)
如何运作
您的配置由 CodeRabbit 在一个孤立、无网络的沙盒和
对照同一计划确认a .coderabbit.yaml 用户。 这个软件包是
只有作者时间 - 它给你的类型和自动完成
评估发生在服务器侧面,所以您的配置不管软件包是否有效
已安装。 安装它只会让你的编辑和CI意识到配置
形状.
API 密码
defineConfig(config | (ctx) => config)输入了您配置的身份 .mergeConfig(...fragments)——深相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相.includeRemote({ repo?, path, ref? })——包括一个共享文件.repo使用该 提供者- 本地寄存器格式和默认为您的 org 格式coderabbit仓库.- 类型 :
CodeRabbitConfig, (中文(简体) ),CodeRabbitContext, (中文(简体) ),CodeRabbitAuthorGroup, (中文(简体) ),CodeRabbitAuthorGroupsContext, (中文(简体) ),CodeRabbitAuthorGroupsStatus, (中文(简体) ),CodeRabbitContextResolutionStatus, (中文(简体) ),CodeRabbitChangedFilesContext, (中文(简体) ),CodeRabbitChangedFilesStatus, (中文(简体) ),CodeRabbitRepositoryContext, (中文(简体) ),CodeRabbitRepositoryTopicsContext, (中文(简体) ),CodeRabbitRepositoryCustomPropertiesContext, (中文(简体) ),CodeRabbitRepositoryCustomPropertyValue, (中文(简体) ),CodeRabbitPullRequestContext, (中文(简体) ),CodeRabbitInvocationContext, (中文(简体) ),CodeRabbitInvocationSource, (中文(简体) ),ResolvedCodeRabbitContext, (中文(简体) ),RemoteInclude。 。 。 .
内部 V3 预览
V2仍然是公共配置合同和 CodeRabbitConfig 类型.
CodeRabbitConfigV3 编辑 defineConfig 编号 : mergeConfig 超载支持 a
明确 version: 3 仅用于认证的内部 GitHub Cloud 预览 .
类型不准许运行时间访问:客户、自办和中央V3条目
配置仍然不支持。 YAML 仍然优先于 TypeScript .
import { defineConfig, mergeConfig } from "@coderabbitai/config"
export default defineConfig(ctx =>
mergeConfig(
{ version: 3, reviews: { behavior: { profile: "chill" } } },
{ fun: { in_progress_fortune: ctx.invocation.source === "review" } },
),
)
启动每个 V3 mergeConfig 带有 V3 基础的调用, 包括嵌入式调用 :
mergeConfig({ version: 3 }, canonical, legacy)。只有无版本的呼叫
片段保留 V2 合同; 附加 V3 合并不能改变
内线已经结合了它的碎片.
对于一个被承认的主寄存器,目录文档从
与永久仓库修订版相同 .coderabbit.config.ts。导入的碎片
不创建额外的目录发现根。 使用
includeRemote<CodeRabbitConfigV3Fragment>({ path: "base.ts" }) 键入远程
V3片段;没有类型参数的调用保留其V2回放类型. 这个
离线 V2 迁移 CLI
仍然读取明确的 YAML 输入; 它不执行 TypeScript 工厂或
证明他们继承的源图.
建造SDK
从寄存器根运行 pnpm build --filter=@coderabbitai/config。 。 。 .
这使用寄存器共享的CPU-预算启动器进行范围构建.
该建筑通过软件包本地化明确使用稳定的类型Script 7
typescript-native 别名。 TypeScript 6 仍然安装为 typescript 页:1
dts-bundle-generator'JavaScript 编译器 API; a 赤色 tsc 可以选择
旧编译器代替 。 保留编译器和声明生成依赖
,而不是在根工作空间.