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

发布时间:2026/9/14 0:43:28

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/9/14 0:43:28

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

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

2026/9/14 1:28:30

冷门好用AI工具的筛选方法论:聚焦最小可交付动作

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

2026/9/14 1:28:30

SpringBoot成绩管理系统开发与开题答辩实战指南

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

2026/9/14 1:28:30

Transformer架构解析:从自注意力到NLP应用

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

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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