diff --git a/@commitlint/resolve-extends/src/index.test.ts b/@commitlint/resolve-extends/src/index.test.ts index 8a9e82b12f..5232e83ad3 100644 --- a/@commitlint/resolve-extends/src/index.test.ts +++ b/@commitlint/resolve-extends/src/index.test.ts @@ -101,6 +101,22 @@ test('ignores prefix for relative extends', () => { expect(ctx.require).toHaveBeenCalledWith('./extender'); }); +test('ignores prefix for absolute extends', () => { + const absolutePath = require.resolve('@commitlint/config-angular'); + const input = {extends: [absolutePath]}; + const ctx = { + resolve: id, + require: jest.fn(() => ({})) + } as ResolveExtendsContext; + + resolveExtends(input, { + ...ctx, + prefix: 'prefix' + }); + + expect(ctx.require).toHaveBeenCalledWith(absolutePath); +}); + test('propagates return value of require function', () => { const input = {extends: ['extender-name']}; const propagated = {foo: 'bar'}; diff --git a/@commitlint/resolve-extends/src/index.ts b/@commitlint/resolve-extends/src/index.ts index c63965a94d..1cba8d18e4 100644 --- a/@commitlint/resolve-extends/src/index.ts +++ b/@commitlint/resolve-extends/src/index.ts @@ -82,12 +82,13 @@ function getId(raw: string = '', prefix: string = ''): string { const first = raw.charAt(0); const scoped = first === '@'; const relative = first === '.'; + const absolute = path.isAbsolute(raw); if (scoped) { return raw.includes('/') ? raw : [raw, prefix].filter(String).join('/'); } - return relative ? raw : [prefix, raw].filter(String).join('-'); + return relative || absolute ? raw : [prefix, raw].filter(String).join('-'); } function resolveConfig(