fix(v2): baseUrl is wrongly appended to anchor links (#3112)

* fix baseurl being wrongly appended to anchor links

* fix baseurl being wrongly appended to anchor links
This commit is contained in:
Sébastien Lorber 2020-07-24 12:40:24 +02:00 committed by GitHub
parent 08a726e154
commit f926178e63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 2 deletions

View file

@ -40,6 +40,7 @@ describe('useBaseUrl', () => {
expect(useBaseUrl('/hello/byebye', {absolute: true})).toEqual(
'https://v2.docusaurus.io/hello/byebye',
);
expect(useBaseUrl('#hello')).toEqual('#hello');
});
test('non-empty base URL', () => {
@ -69,6 +70,7 @@ describe('useBaseUrl', () => {
);
expect(useBaseUrl('/docusaurus/')).toEqual('/docusaurus/');
expect(useBaseUrl('/docusaurus/hello')).toEqual('/docusaurus/hello');
expect(useBaseUrl('#hello')).toEqual('#hello');
});
});
@ -99,6 +101,7 @@ describe('useBaseUrlUtils().withBaseUrl()', () => {
expect(withBaseUrl('/hello/byebye', {absolute: true})).toEqual(
'https://v2.docusaurus.io/hello/byebye',
);
expect(withBaseUrl('#hello')).toEqual('#hello');
});
test('non-empty base URL', () => {
@ -129,5 +132,6 @@ describe('useBaseUrlUtils().withBaseUrl()', () => {
);
expect(withBaseUrl('/docusaurus/')).toEqual('/docusaurus/');
expect(withBaseUrl('/docusaurus/hello')).toEqual('/docusaurus/hello');
expect(withBaseUrl('#hello')).toEqual('#hello');
});
});

View file

@ -23,6 +23,11 @@ function addBaseUrl(
return url;
}
// it never makes sense to add a base url to a local anchor url
if (url.startsWith('#')) {
return url;
}
// it never makes sense to add a base url to an url with a protocol
if (hasProtocol(url)) {
return url;
@ -32,8 +37,7 @@ function addBaseUrl(
return baseUrl + url;
}
// sometimes we try to add baseurl to an url that already has a baseurl
// we should avoid adding the baseurl twice
// We should avoid adding the baseurl twice if it's already there
const shouldAddBaseUrl = !url.startsWith(baseUrl);
const basePath = shouldAddBaseUrl ? baseUrl + url.replace(/^\//, '') : url;