如何配置Renovate阻止依赖更新至-SNAPSHOT版本?
Renovate跳过SNAPSHOT版本的正确配置方案
核心问题分析
你之前的配置无效,主要是两个原因:正则大小写不匹配,以及JSON中反斜杠的转义处理不到位。Renovate使用JavaScript风格的正则,默认区分大小写,你的规则!/\-snapshot$/只能匹配小写的snapshot,但目标版本是大写的SNAPSHOT,自然不会生效。
正确配置示例
1. 精确匹配单个包(org.spockframework:spock-core)
直接指定包名,正则明确匹配大写结尾的SNAPSHOT:
{ "packageRules": [ { "matchPackageNames": ["org.spockframework:spock-core"], "allowedVersions": "!/\\-SNAPSHOT$/" } ] }
注意:JSON中反斜杠需要双转义,所以写成\\-。
2. 匹配同前缀的所有包
如果要对org.spockframework下的所有包生效,可以用前缀匹配,同时开启正则不区分大小写(/i标记),兼容各种大小写的SNAPSHOT写法:
{ "packageRules": [ { "matchPackagePrefixes": ["org.spockframework:"], "allowedVersions": "!/\\-snapshot$/i" } ] }
关键规则说明
- 正则是否需要全匹配? 不需要。只要正则能定位到版本中要排除的特征即可,这里用
$锚定版本结尾,确保只排除以SNAPSHOT结尾的版本。 - 是否区分大小写? 默认区分。如果需要兼容大小写,在正则末尾加
/i标记即可。 - 配置生效验证:可以在Renovate的日志中查看包匹配情况,或者手动用在线正则工具测试规则是否能命中目标版本。
内容的提问来源于stack exchange,提问作者Mr. Gung
相关产品推荐
相关产品推荐

