diff --git a/lib/util/package-rules/package-patterns.spec.ts b/lib/util/package-rules/package-patterns.spec.ts index 467191ae45f35f68d63c02b96e413233e5ec817b..fcb614a2d21858e2a85f4b99818a0e618fa6bbb6 100644 --- a/lib/util/package-rules/package-patterns.spec.ts +++ b/lib/util/package-rules/package-patterns.spec.ts @@ -42,4 +42,19 @@ describe('util/package-rules/package-patterns', () => { expect(result).toBeTrue(); }); }); + + describe('exclude', () => { + it('should exclude packageName', () => { + const result = packageNameMatcher.excludes( + { + depName: 'abc', + packageName: 'def', + }, + { + excludePackagePatterns: ['def'], + }, + ); + expect(result).toBeTrue(); + }); + }); }); diff --git a/lib/util/package-rules/package-patterns.ts b/lib/util/package-rules/package-patterns.ts index 1823d9c888b5897a1eb2cbd589701445d4005ace..bc4f4029ed788bbcbbe29feb56082a1df33438e7 100644 --- a/lib/util/package-rules/package-patterns.ts +++ b/lib/util/package-rules/package-patterns.ts @@ -50,9 +50,10 @@ export class PackagePatternsMatcher extends Matcher { } override excludes( - { depName }: PackageRuleInputConfig, - { excludePackagePatterns }: PackageRule, + { depName, packageName }: PackageRuleInputConfig, + packageRule: PackageRule, ): boolean | null { + const { excludePackagePatterns } = packageRule; // ignore lockFileMaintenance for backwards compatibility if (is.undefined(excludePackagePatterns)) { return null; @@ -61,15 +62,22 @@ export class PackagePatternsMatcher extends Matcher { return false; } - let isMatch = false; - for (const pattern of excludePackagePatterns) { - const packageRegex = regEx(massagePattern(pattern)); - if (packageRegex.test(depName)) { - logger.trace(`${depName} matches against ${String(packageRegex)}`); - isMatch = true; - } + if ( + is.string(packageName) && + matchPatternsAgainstName(excludePackagePatterns, packageName) + ) { + return true; + } + + if (matchPatternsAgainstName(excludePackagePatterns, depName)) { + logger.once.info( + { packageRule, packageName, depName }, + 'Use excludeDepPatterns instead of excludePackagePatterns', + ); + return true; } - return isMatch; + + return false; } }