Renovate 的 pre-commit manager 深度指南:启用方式、配置格式与 additional_dependencies 支持

发布时间:2026/11/11 0:31:15

Renovate 的 pre-commit manager 深度指南:启用方式、配置格式与 additional_dependencies 支持 Renovate 的 pre-commit manager 深度指南启用方式、配置格式与 additional_dependencies 支持【免费下载链接】renovateHome of the Renovate CLI: Cross-platform Dependency Automation by Mend.io项目地址: https://gitcode.com/GitHub_Trending/re/renovate本篇技术指南聚焦 Renovate 中负责更新 pre-commit 配置依赖的pre-commitmanager讲解其默认禁用原因、两种启用方式、所支持的.pre-commit-config.yaml格式约定以及 Go / Node.js / Python 三种语言的additional_dependencies部分支持。读完本文你将掌握如何在自托管或托管环境中安全地启用该 manager并能依据源码理解其文件识别、URL 解析与数据源选择的全过程。为什么 pre-commit manager 默认是禁用的与大多数默认开启的 manager 不同Renovate 的pre-commitmanager 在defaultConfig中显式设置了enabled: false必须由用户主动开启见 index.ts。这一设计并非技术缺陷而是项目间协作的现实选择Renovate 的版本更新思路与pre-commit autoupdate并不完全一致这种差异曾给pre-commit项目的作者/维护者带来困扰Renovate 团队曾尝试与pre-commit项目协作修复这些差异但提议未被接受因此选择长期默认禁用该 manager官方文档明确提示不要就任何 Renovate 相关问题联系pre-commit项目或维护者。与之对应启用后 Renovate 生成的 PR 描述中会附带一段提示引导用户到 Renovate 仓库的 Discussion 提问而不是去 pre-commit 仓库报问题见 index.ts。如果你希望查看该 manager 的已知问题清单可关注 Renovate 仓库中带有manager:pre-commit标签的 issue原文档中给出了对应的过滤链接。两种启用方式方式一显式配置 enabled在renovate.json中为pre-commit配置块设置enabled: true{ pre-commit: { enabled: true } }方式二使用内置 preset:enablePreCommit在extends数组中追加:enablePreCommit{ extends: [:enablePreCommit] }该 preset 的定义位于 default.preset.ts本质上是把pre-commit.enabled设为trueenablePreCommit: { description: Enable the pre-commit manager., pre-commit: { enabled: true, }, },两种方式等价选择其一即可。需要强调的是只有在显式启用后Renovate 才会扫描并更新 pre-commit 相关文件。支持的文件与格式约定启用后Renovate 默认通过managerFilePatterns匹配文件默认模式为/(^|/)\.pre-commit-config\.ya?ml$/见 index.ts即仓库根目录或任意子目录下名为.pre-commit-config.yaml或.pre-commit-config.yml的文件。你也可以通过managerFilePatterns配置扩展让 Renovate 扫描使用相同格式的其他 YAML 文件。被扫描的文件必须遵循 pre-commit 常规格式即顶层包含repos列表每个 repo 项包含repoGit 仓库地址与rev版本标签repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v1.0.0 hooks: - id: some-hook-id对应地parsing.ts 中的两个启发式判定函数决定文件与依赖是否被识别matchesPrecommitConfigHeuristic仅当解析结果是对象且存在repos键时才认为这是 pre-commit 配置文件matchesPrecommitDependencyHeuristic仅当 repo 项同时存在repo与rev键时才将其视为一个 Git hook 依赖。从源码结构看若 YAML 解析失败、顶层没有repos键、repos为空、或 repo 项缺少rev该文件/依赖都会被跳过这些行为均有对应的单元测试覆盖见 extract.spec.ts。仓库 URL 的解析与数据源选择pre-commit 配置中的repo通常是 Git 仓库地址Renovate 需要从中拆出hostname与depName。在 extract.ts 中支持以下四种 URL 写法URL 形式示例HTTPShttps://github.com/user/repoSCP 风格 SSHgitgithub.com:user/repogit 协议git://github.com/user/repo显式 SSH 协议ssh://gitgithub.com/user/repo解析出的 hostname 会交给determineDatasource选择对应的数据源extract.tsgithub.com或 GitHub 平台 →github-tags数据源gitlab.com或 GitLab 平台 →gitlab-tags数据源Forgejo 平台 →forgejo-tags数据源其他自托管域名如gitlab.mycompany.com、codeberg.org→ 先通过hostRules查找匹配的 host rule若命中github/gitlab/forgejo类型的 rule则使用对应数据源并把该 hostname 作为registryUrls传入若完全没有匹配的 host rule依赖会被标记为skipReason: unknown-registry。因此supportedDatasources仅有三种forgejo-tags、github-tags、gitlab-tags见 index.ts。仓库中的测试夹具 complex.pre-commit-config.yaml 覆盖了 GitHub、GitLab、自建 GitLab 域名、Forgejo/Codeberg、HTTP 前缀、SSH 写法、无效 URL 等多种输入形态可用于直观验证解析行为。另外值得一提的是rev行支持 pre-commit 的 frozen 注释格式即rev: 40位digest # frozen: 版本Renovate 会通过正则提取currentDigest与currentValue并用{{newDigest}} ... # frozen: {{newValue}}模板保持注释格式完成替换见 extract.ts。additional_dependencies 的部分支持Renovate 对 hook 内的additional_dependencies提供部分支持目前仅覆盖 Go、Node.js 与 Python 三种语言。使用前提是必须在 hook 中显式声明language字段否则 Renovate 无法推断依赖类型、不会提取这些附加依赖。源码中正是通过判断hook.language的值golang/node/python来决定走哪条解析路径见 extract.ts。Goadditional_dependencies中的条目写法为模块路径版本内部会被转换为 gomod 的require行后复用 gomod 的 line parser 解析- repo: https://github.com/rhysd/actionlint rev: v1.7.7 hooks: - id: actionlint language: golang additional_dependencies: - github.com/wasilibs/go-shellcheck/cmd/shellcheckv0.10.0Node.js条目写法为包名范围支持^等 semver 范围内部复用 npm manager 的依赖提取逻辑- repo: https://github.com/pre-commit/mirrors-prettier rev: v3.1.0 hooks: - id: prettier language: node additional_dependencies: - trivago/prettier-plugin-sort-imports^5.2.2 - prettier^3.6.2Python条目采用 PEP 508 规范写法如包名版本内部通过 pep621 模块的pep508ToPackageDependency转换为依赖对象- repo: https://github.com/psf/black rev: 19.3b0 hooks: - id: black language: python additional_dependencies: - requests1.1.1此外还有两点细节值得注意meta特殊仓库会被跳过repo: meta是 pre-commit 内置的 meta hooks不支持additional_dependencies源码中会直接跳过其内部 hooks 的附加依赖提取extract.ts无效条目被静默忽略additional_dependencies中的空字符串或无法解析的条目如无效 npm 包名、无效 Go 包不会导致报错而是被跳过测试夹具 complex.pre-commit-config.yaml 中即包含这类用例。不同语言解析出的依赖会被标记为不同的depType见 dep-types.tshook 仓库引用本身为repository附加依赖分别为pre-commit-node、pre-commit-python、pre-commit-golang。而 index.ts 中的defaultConfig.commitMessageTopic: pre-commit hook {{depName}}决定了这类更新 PR 的提交信息主题格式。常见问题与排错线索文件未被识别确认已显式启用 manager且文件名为.pre-commit-config.yaml或.yml若文件名不同需通过managerFilePatterns扩展匹配规则repo 项未生成更新检查该项是否同时具备repo与rev键rev缺失会被启发式判定过滤additional_dependencies 未更新确认 hook 中显式声明了language且语言属于 Go / Node.js / Python 三者之一自托管 Git 平台无更新为该域名配置对应的hostRuleshostType 为 github / gitlab / forgejo否则依赖会被标记为unknown-registry而跳过。若仍有疑问请在 Renovate 仓库发起 Discussion 提问而不要联系pre-commit项目这既符合官方文档的明确指引也能让问题进入正确的维护渠道。【免费下载链接】renovateHome of the Renovate CLI: Cross-platform Dependency Automation by Mend.io项目地址: https://gitcode.com/GitHub_Trending/re/renovate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/11 8:50:46

结构化数据与非结构化文档的混合检索(Hybrid Structured RAG)

结构化数据与非结构化文档的混合检索(Hybrid Structured RAG)在企业级 RAG(检索增强生成)与商业智能问答系统的深度落地中,真实的复杂业务提问往往同时跨越了**“结构化关系数据(Structured Relational Dat…

2026/11/11 17:15:28

架子工特种作业证书多少钱?学历不高也能考,关键看这几点

架子工特种作业证书多少钱?学历不高也能考,关键看这几点 你是不是也觉得学历不高就报不了架子工特种作业证书?其实不然,真正决定你能不能考上的,不是学历,而是你有没有符合条件的工作经历和培训记录。而且,现在考架子工特种作业证书, 多少钱…

2026/11/11 17:15:28

宁夏灵武哪里考电工证与2026河南最新政策怎么影响你找工作

宁夏灵武哪里考电工证与2026河南最新政策怎么影响你找工作 你是不是正在为找不到工作发愁?是不是看到招聘信息上写着“必须持有电工证”才头疼?别急,这篇文章就是为你量身打造的。如果你在宁夏灵武,想要考电工证,或者正在关注…

2026/11/11 17:15:28

轮式特种作业操作证官方回应实操考试怕挂科?这样准备稳过

轮式特种作业操作证官方回应实操考试怕挂科?这样准备稳过 实操考试心里没底怕挂科,这是很多准备考轮式特种作业操作证的朋友最真实的感受。特别是像我们这种在水利工程一线干活的,平时干活靠经验,一到考试就慌,担心自己搞不定那些操作流程。其实官方早就…

2026/11/11 17:15:28

淮北考电工证难不难呀 郑州报考避坑指南怎么避开坑

淮北考电工证难不难呀 郑州报考避坑指南怎么避开坑 证书过期了不知道怎么复审延期,这事儿真的让人头疼。特别是像电工证这种关系到作业安全的特种作业证书,一旦过期不及时处理,不仅影响工作,还可能承担法律责任。在郑州,很多电工从业者都曾踩过坑,有些…

2026/11/11 17:15:28

低压电工证有效期满?真实经历告诉你怎么处理

低压电工证有效期满?真实经历告诉你怎么处理 证书过期了不知道怎么复审延期?我有个朋友小李,干了三年低压电工,去年年底证刚好到期,他想着反正还有几个月才用,结果公司新项目开工,他被直接叫去现场,结果被查出证书过期,差点被停岗。这个事,我身边就…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑