From ef5a110f2999f0d56c6e2e6daaf63bfd0497bff5 Mon Sep 17 00:00:00 2001 From: "Braden M. Kelley" <redbmk@gmail.com> Date: Fri, 9 Oct 2020 08:11:13 -0700 Subject: [PATCH] allow homepage to provide a full URL in production Fixes #8813 --- .../__tests__/getPublicUrlOrPath.test.js | 20 +++++++++++++++++-- .../react-dev-utils/getPublicUrlOrPath.js | 10 ++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/packages/react-dev-utils/__tests__/getPublicUrlOrPath.test.js b/packages/react-dev-utils/__tests__/getPublicUrlOrPath.test.js index 9e9677edc..505a9e131 100644 --- a/packages/react-dev-utils/__tests__/getPublicUrlOrPath.test.js +++ b/packages/react-dev-utils/__tests__/getPublicUrlOrPath.test.js @@ -58,6 +58,12 @@ const tests = [ homepage: '/path', expect: '/test/', }, + { + dev: true, + publicUrl: '/path', + homepage: 'https://create-react-app.dev/test', + expect: '/path/', + }, // PRODUCTION with homepage { dev: false, homepage: '/', expect: '/' }, @@ -67,11 +73,15 @@ const tests = [ { dev: false, homepage: '../', expect: '../' }, { dev: false, homepage: '../test', expect: '../test/' }, { dev: false, homepage: './test/path', expect: './test/path/' }, - { dev: false, homepage: 'https://create-react-app.dev/', expect: '/' }, + { + dev: false, + homepage: 'https://create-react-app.dev/', + expect: 'https://create-react-app.dev/', + }, { dev: false, homepage: 'https://create-react-app.dev/test', - expect: '/test/', + expect: 'https://create-react-app.dev/test/', }, // PRODUCTION with publicUrl { dev: false, publicUrl: '/', expect: '/' }, @@ -116,6 +126,12 @@ const tests = [ homepage: '/path', expect: 'https://create-react-app.dev/test/', }, + { + dev: false, + publicUrl: '/path', + homepage: 'https://create-react-app.dev/test', + expect: '/path/', + }, ]; describe('getPublicUrlOrPath', () => { diff --git a/packages/react-dev-utils/getPublicUrlOrPath.js b/packages/react-dev-utils/getPublicUrlOrPath.js index dbb7cda5a..f8c064354 100644 --- a/packages/react-dev-utils/getPublicUrlOrPath.js +++ b/packages/react-dev-utils/getPublicUrlOrPath.js @@ -49,16 +49,14 @@ function getPublicUrlOrPath(isEnvDevelopment, homepage, envPublicUrl) { homepage = homepage.endsWith('/') ? homepage : homepage + '/'; // validate if `homepage` is a URL or path like and use just pathname - const validHomepagePathname = new URL(homepage, stubDomain).pathname; + const validHomepage = new URL(homepage, stubDomain); return isEnvDevelopment ? homepage.startsWith('.') ? '/' - : validHomepagePathname + : validHomepage.pathname : // Some apps do not use client-side routing with pushState. - // For these, "homepage" can be set to "." to enable relative asset paths. - homepage.startsWith('.') - ? homepage - : validHomepagePathname; + // For these, "homepage" can be set to "." to enable relative asset paths. + homepage; } return '/'; -- GitLab