研发协作
需要配置或优化 GitHub Dependabot…
适用于在 GitHub 仓库中用 Dependabot 管理依赖告警、安全更新、版本更新、分组、自动分流,以及 AI 编码代理提交前扫描依赖漏洞的场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要配置或优化 GitHub Depen特定
解决思路
- 将 Dependabot 配置放在默认分支的 `.github/dependabot.yml`;GitHub 每个仓库只支持一个 `dependabot.yml`,不要创建多个文件,用同一个文件里的多个 `updates` 条目覆盖不同生态和目录。
- 创建或优化时按四步执行:检测所有生态;映射目录位置;为每个生态条目配置最小字段;再用分组、标签、调度等优化。
- 检测 npm/pnpm/yarn 生态:YAML 值使用 `npm`,检查 `package.json`、`package-lock.json`、`pnpm-lock.yaml`、`yarn.lock`。
- 检测 pip/pipenv/poetry 生态:YAML 值使用 `pip`,检查 `requirements.txt`、`Pipfile`、`pyproject.toml`、`setup.py`。
- 检测 uv 生态:YAML 值使用 `uv`,检查 `pyproject.toml`、`uv.lock`。
- 检测 Docker 生态:YAML 值使用 `docker`,检查 `Dockerfile`。
- 检测 Docker Compose 生态:YAML 值使用 `docker-compose`,检查 `docker-compose.yml`。
- 检测 GitHub Actions 生态:YAML 值使用 `github-actions`,检查 `.github/workflows/*.yml`。
- 检测 Go modules 生态:YAML 值使用 `gomod`,检查 `go.mod`。
- 检测 Bundler 生态:YAML 值使用 `bundler`,检查 `Gemfile`。
- 检测 Cargo 生态:YAML 值使用 `cargo`,检查 `Cargo.toml`。
- 检测 Composer 生态:YAML 值使用 `composer`,检查 `composer.json`。
- 检测 NuGet 生态:YAML 值使用 `nuget`,检查 `*.csproj`、`packages.config`。
- 检测 .NET SDK 生态:YAML 值使用 `dotnet-sdk`,检查 `global.json`。
- 检测 Maven 生态:YAML 值使用 `maven`,检查 `pom.xml`。
- 检测 Gradle 生态:YAML 值使用 `gradle`,检查 `build.gradle`。
- 检测 Terraform 生态:YAML 值使用 `terraform`,检查 `*.tf`。
- 检测 OpenTofu 生态:YAML 值使用 `opentofu`,检查 `*.tf`。
- 检测 Helm 生态:YAML 值使用 `helm`,检查 `Chart.yaml`。
- 检测 Hex 生态:YAML 值使用 `mix`,检查 `mix.exs`。
- 检测 Swift 生态:YAML 值使用 `swift`,检查 `Package.swift`。
- 检测 Pub 生态:YAML 值使用 `pub`,检查 `pubspec.yaml`。
- 检测 Bun 生态:YAML 值使用 `bun`,检查 `bun.lockb`。
- 检测 Dev Containers 生态:YAML 值使用 `devcontainers`,检查 `devcontainer.json`。
- 检测 Git Submodules 生态:YAML 值使用 `gitsubmodule`,检查 `.gitmodules`。
- 检测 Pre-commit 生态:YAML 值使用 `pre-commit`,检查 `.pre-commit-config.yaml`。
- 注意 pnpm 和 yarn 都使用 `npm` 生态值;存在 `uv.lock` 时优先用 `uv`,否则用 `pip`。
- 为每个生态映射目录位置:使用 `directories`(复数)配合 glob 模式覆盖 monorepo,例如 `directories: ['/', '/apps/*', '/packages/*', '/lib-*', '**/*']`;`directory`(单数)不支持 glob。
- 每个生态条目至少配置:`- package-ecosystem: 'npm'`、`directory: '/'`、`schedule: interval: 'weekly'`。
- monorepo 用 glob 覆盖工作区:例如 `directories: ['/', '/apps/*', '/packages/*', '/services/*']`,再设置 `schedule: interval: 'weekly'`。
- 跨目录分组使用 `group-by: dependency-name`:例如 `groups: monorepo-deps: group-by: dependency-name`,让同一依赖跨多个目录更新时生成一个 PR,降低 CI 成本和评审负担;限制是所有目录必须同一生态系统、仅适用于版本更新、不兼容的版本约束会拆成单独 PR。
- 若目录有独立 lockfile 且不属于 workspace(例如 `.github/` 中的脚本),为它创建单独的 ecosystem 条目。
- 按依赖类型分组:例如 `groups: dev-dependencies: dependency-type: 'development' update-types: ['minor', 'patch']` 和 `production-dependencies: dependency-type: 'production' update-types: ['minor', 'patch']`。
- 按名称模式分组:例如 `groups: angular: patterns: ['@angular*'] update-types: ['minor', 'patch']` 和 `testing: patterns: ['jest*', '@testing-library*', 'ts-jest']`。
- 为安全更新分组:例如 `groups: security-patches: applies-to: security-updates patterns: ['*'] update-types: ['patch', 'minor']`;关键行为是匹配多个组时进入第一个匹配组,`applies-to` 省略时默认 `version-updates`,未分组依赖生成单独 PR。
- 配置多生态系统组:例如顶层 `multi-ecosystem-groups: infrastructure: schedule: interval: 'weekly' labels: ['infrastructure', 'dependencies']`,然后在 `updates` 中为 `docker` 和 `terraform` 等条目设置 `multi-ecosystem-group: 'infrastructure'`;使用 `multi-ecosystem-group` 时必须提供 `patterns`。
- 自定义 PR 标签:例如 `labels: ['dependencies', 'npm']`;设置 `labels: []` 可禁用包括默认标签在内的所有标签;如果仓库中存在 SemVer 标签,`major`、`minor`、`patch` 始终会被应用。
- 自定义提交信息:例如 `commit-message: prefix: 'deps' prefix-development: 'deps-dev' include: 'scope'`,在 prefix 后添加 deps/deps-dev scope。
- 配置 assignees 和 milestone:例如 `assignees: ['security-team-lead']`、`milestone: 4`(使用 milestone URL 中的数字 ID)。
- 配置分支名分隔符:例如 `pull-request-branch-name: separator: '-'`(默认是 `/`)。
- 配置目标分支:例如 `target-branch: 'develop'` 让 PR 指向该分支而不是默认分支;注意设置 `target-branch` 后,安全更新仍指向默认分支,生态配置只作用于版本更新。
- 配置调度间隔:支持 `daily`、`weekly`、`monthly`、`quarterly`、`semiannually`、`yearly`、`cron`;例如 `schedule: interval: 'weekly' day: 'monday' time: '09:00' timezone: 'America/New_York'`,其中 `day` 仅用于 weekly。
- 配置 cron 表达式:例如 `schedule: interval: 'cron' cronjob: '0 9 * * 1'`(每周一 9 AM)。
- 配置 cooldown 延迟新版本更新:例如 `cooldown: default-days: 5 semver-major-days: 30 semver-minor-days: 7 semver-patch-days: 3 include: ['*'] exclude: ['critical-lib']`;cooldown 仅适用于版本更新,不适用于安全更新。
- 通过仓库设置启用安全更新:进入 Settings → Advanced Security → 启用 Dependabot alerts、security updates 和 grouped security updates。
- 在 YAML 中分组安全更新:使用 `groups: security-patches: applies-to: security-updates patterns: ['*'] update-types: ['patch', 'minor']`。
- 仅启用安全更新、禁用版本更新:设置 `open-pull-requests-limit: 0`。
- 配置自动分流规则:GitHub 预设会自动关闭开发依赖中低影响告警;自定义规则可按严重级别、包名、CWE 等过滤;在仓库 Settings → Advanced Security 中配置。
- 用 `@dependabot` 评论与 PR 交互:`@dependabot rebase` 变基 PR;`@dependabot recreate` 从头重建 PR;`@dependabot ignore this dependency` 关闭并永不更新该依赖;`@dependabot ignore this major version` 忽略该主版本;`@dependabot ignore this minor version` 忽略该次版本;`@dependabot ignore this patch version` 忽略该补丁版本;截至 2026 年 1 月,merge/close/reopen 命令已弃用,改用 GitHub 原生 UI、CLI `gh pr merge` 或 auto-merge。
- 对分组 PR 使用额外评论命令:`@dependabot ignore DEPENDENCY_NAME` 忽略组内指定依赖;`@dependabot unignore DEPENDENCY_NAME` 清除忽略并重新打开更新;`@dependabot unignore *` 清除组内所有依赖的忽略;`@dependabot show DEPENDENCY_NAME ignore conditions` 显示当前忽略条件;完整命令参考见 `references/pr-commands.md`。
- 配置忽略指定依赖:例如 `ignore: - dependency-name: 'lodash'`、`- dependency-name: '@types/node' update-types: ['version-update:semver-patch']`、`- dependency-name: 'express' versions: ['5.x']`。
- 配置仅允许指定类型:例如 `allow: - dependency-type: 'production'`、`- dependency-name: 'express'`;如果依赖同时匹配 `allow` 和 `ignore`,它会被忽略。
- 排除路径:例如 `exclude-paths: ['vendor/**', 'test/fixtures/**']`。
- 配置版本策略:`auto` 是默认,应用增加版本、库放宽范围;`increase` 总是增加最低版本;`increase-if-necessary` 仅当当前范围不包含新版本时修改;`lockfile-only` 只更新 lockfile,忽略 manifest;`widen` 放宽范围以同时包含新旧版本。
- 配置 rebase 策略:例如 `rebase-strategy: 'disabled'` 停止自动 rebase;在提交信息中包含 `[dependabot skip]` 可允许在额外提交之上 rebase。
- 配置开放 PR 上限:例如 `open-pull-requests-limit: 10`;默认版本更新为 5,安全更新为 10;设置为 `0` 可完全禁用版本更新。
- 配置私有注册表:例如 `registries: npm-private: type: 'npm-registry' url: 'https://npm.example.com' token: '${{secrets.NPM_TOKEN}}'`,然后在 `updates` 条目中添加 `registries: ['npm-private']`。
- FAQ:不能有多个 `dependabot.yml`,GitHub 只支持 `.github/dependabot.yml` 一个文件;用多个 `updates` 条目处理不同生态和目录。
- FAQ:Dependabot 支持 pnpm,使用 `package-ecosystem: 'npm'`,它会自动识别 `pnpm-lock.yaml`。
- FAQ:monorepo 降低 PR 噪音用 `groups` 批量更新、`directories` 加 glob 覆盖、`group-by: dependency-name` 跨目录分组;低优先级生态可考虑 `monthly` 或 `quarterly` 间隔。
- FAQ:处理 workspace 外的依赖,为它创建单独的 ecosystem 条目,并用自己的 `directory` 指向该位置。
- 在 AI 编码代理提交前扫描依赖:GitHub MCP Server 的 `dependabot` 工具集可用 GitHub Advisory Database 检查新增依赖,返回受影响包、严重级别和推荐修复版本;提交后更彻底检查时,可在本地运行 Dependabot CLI 对比变更前后的依赖图。
- 安装 Advanced Security 插件:它提供专用依赖扫描工具和 `/dependency-scanning` skill。
- GitHub Copilot CLI(shell)中启用 dependabot 工具集:运行 `copilot --add-github-mcp-toolset dependabot`。
- GitHub Copilot CLI(进入 `copilot` 后)安装插件:运行 `/plugin install advanced-security@copilot-plugins`。
- VS Code 中配置:向 GitHub MCP Server headers 添加 `"X-MCP-Toolsets": "dependabot"`,或在 Copilot Chat 的 toolset selector 中选择 Dependabot;安装 `advanced-security` 插件后,在 Copilot Chat 中使用 `/dependency-scanning`。
- 示例提示词:'扫描我在这个分支新增的依赖是否存在已知漏洞,并告诉我提交前应升级到哪些版本。'
- 需要完整参考时查阅 `references/dependabot-yml-reference.md`、`references/pr-commands.md`、`references/example-configs.md`。
适用边界 · 注意事项
- 非 GitHub 托管仓库或无法启用 Dependabot/GitHub Advanced Security 的场景不适用。
- 需要按多个仓库或多个配置文件拆分 `dependabot.yml` 时不可行;GitHub 只支持一个 `.github/dependabot.yml`。
- 需要依赖 `@dependabot merge/close/reopen` 等已弃用命令自动合并或关闭 PR 的场景不适用;应改用原生 UI、`gh pr merge` 或 auto-merge。