From c52e7d56870256195cb2501a28b51a4b14a233e1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 6 Feb 2024 12:23:49 +0100 Subject: [PATCH] cli: stop requiring config for the frontend build Signed-off-by: Patrik Oldsberg --- .changeset/poor-jeans-rescue.md | 5 +++++ packages/cli/src/lib/bundler/bundle.ts | 3 +-- packages/cli/src/lib/bundler/config.ts | 7 +++---- packages/cli/src/lib/bundler/server.ts | 7 ++++--- packages/cli/src/lib/bundler/types.ts | 1 - 5 files changed, 13 insertions(+), 10 deletions(-) create mode 100644 .changeset/poor-jeans-rescue.md diff --git a/.changeset/poor-jeans-rescue.md b/.changeset/poor-jeans-rescue.md new file mode 100644 index 0000000000..e44b9c6bc6 --- /dev/null +++ b/.changeset/poor-jeans-rescue.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Make `http://localhost:3000` the default base URL for serving locally, and `/` the default public path for built apps. The app build no longer requires any configuration values to be present. diff --git a/packages/cli/src/lib/bundler/bundle.ts b/packages/cli/src/lib/bundler/bundle.ts index c5dda4b1cd..98ef2017b9 100644 --- a/packages/cli/src/lib/bundler/bundle.ts +++ b/packages/cli/src/lib/bundler/bundle.ts @@ -23,7 +23,7 @@ import { printFileSizesAfterBuild, } from 'react-dev-utils/FileSizeReporter'; import formatWebpackMessages from 'react-dev-utils/formatWebpackMessages'; -import { createConfig, resolveBaseUrl } from './config'; +import { createConfig } from './config'; import { BuildOptions } from './types'; import { resolveBundlingPaths, resolveOptionalBundlingPaths } from './paths'; import chalk from 'chalk'; @@ -51,7 +51,6 @@ export async function buildBundle(options: BuildOptions) { ...options, checksEnabled: false, isDev: false, - baseUrl: resolveBaseUrl(options.frontendConfig), getFrontendAppConfigs: () => options.frontendAppConfigs, }; const configs = [ diff --git a/packages/cli/src/lib/bundler/config.ts b/packages/cli/src/lib/bundler/config.ts index 7c72dc81f7..581ead8575 100644 --- a/packages/cli/src/lib/bundler/config.ts +++ b/packages/cli/src/lib/bundler/config.ts @@ -44,9 +44,9 @@ import { hasReactDomClient } from './hasReactDomClient'; const BUILD_CACHE_ENV_VAR = 'BACKSTAGE_CLI_EXPERIMENTAL_BUILD_CACHE'; export function resolveBaseUrl(config: Config): URL { - const baseUrl = config.getString('app.baseUrl'); + const baseUrl = config.getOptionalString('app.baseUrl'); try { - return new URL(baseUrl); + return new URL(baseUrl ?? '/', 'http://localhost:3000'); } catch (error) { throw new Error(`Invalid app.baseUrl, ${error}`); } @@ -100,8 +100,7 @@ export async function createConfig( const { packages } = await getPackages(cliPaths.targetDir); const externalPkgs = packages.filter(p => !isChildPath(paths.root, p.dir)); - const baseUrl = frontendConfig.getString('app.baseUrl'); - const validBaseUrl = new URL(baseUrl); + const validBaseUrl = resolveBaseUrl(frontendConfig); let publicPath = validBaseUrl.pathname.replace(/\/$/, ''); if (publicSubPath) { publicPath = `${publicPath}${publicSubPath}`.replace('//', '/'); diff --git a/packages/cli/src/lib/bundler/server.ts b/packages/cli/src/lib/bundler/server.ts index f1eb2e923d..5690dcae72 100644 --- a/packages/cli/src/lib/bundler/server.ts +++ b/packages/cli/src/lib/bundler/server.ts @@ -110,9 +110,10 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be }); latestFrontendAppConfigs = cliConfig.frontendAppConfigs; - const appBaseUrl = cliConfig.frontendConfig.getString('app.baseUrl'); - const backendBaseUrl = cliConfig.frontendConfig.getString('backend.baseUrl'); - if (appBaseUrl === backendBaseUrl) { + const appBaseUrl = cliConfig.frontendConfig.getOptionalString('app.baseUrl'); + const backendBaseUrl = + cliConfig.frontendConfig.getOptionalString('backend.baseUrl'); + if (appBaseUrl && appBaseUrl === backendBaseUrl) { console.log( chalk.yellow( `⚠️ Conflict between app baseUrl and backend baseUrl: diff --git a/packages/cli/src/lib/bundler/types.ts b/packages/cli/src/lib/bundler/types.ts index 4a9424dedb..eeb42ef6a3 100644 --- a/packages/cli/src/lib/bundler/types.ts +++ b/packages/cli/src/lib/bundler/types.ts @@ -23,7 +23,6 @@ export type BundlingOptions = { isDev: boolean; frontendConfig: Config; getFrontendAppConfigs(): AppConfig[]; - baseUrl: URL; parallelism?: number; additionalEntryPoints?: string[]; // Path to append to the detected public path, e.g. '/public'