From d070bda0d4409d143d7bb41eefef43be178905ad Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Thu, 25 Sep 2025 10:55:50 +0200 Subject: [PATCH] refactor: simplify the resolve entry path logic Signed-off-by: Camila Belo --- .../commands/package/start/startPackage.test.ts | 6 +++--- .../build/commands/package/start/startPackage.ts | 16 +++++++--------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/packages/cli/src/modules/build/commands/package/start/startPackage.test.ts b/packages/cli/src/modules/build/commands/package/start/startPackage.test.ts index b2aa172867..ca153adb22 100644 --- a/packages/cli/src/modules/build/commands/package/start/startPackage.test.ts +++ b/packages/cli/src/modules/build/commands/package/start/startPackage.test.ts @@ -46,12 +46,12 @@ describe('resolveEntryPath', () => { it('should handle multiple dots in filename', () => { mockDir.setContent({ - 'file.backup.old.ts': 'export const data = {};', + 'index.alpha.ts': 'export const data = {};', }); - const result = resolveEntryPath('file.backup.old.ts', mockDir.path); + const result = resolveEntryPath('index.alpha.ts', mockDir.path); - expect(result).toBe('file.backup.old'); + expect(result).toBe('index.alpha'); }); it('should handle simple directory names', () => { diff --git a/packages/cli/src/modules/build/commands/package/start/startPackage.ts b/packages/cli/src/modules/build/commands/package/start/startPackage.ts index 368a28b5df..b49fd482e5 100644 --- a/packages/cli/src/modules/build/commands/package/start/startPackage.ts +++ b/packages/cli/src/modules/build/commands/package/start/startPackage.ts @@ -17,21 +17,19 @@ import { PackageRole } from '@backstage/cli-node'; import { startBackend, startBackendPlugin } from './startBackend'; import { startFrontend } from './startFrontend'; -import { statSync, readdirSync } from 'fs'; -import { resolve, join, parse } from 'path'; +import { parse, resolve, join } from 'path'; +import { glob } from 'glob'; export function resolveEntryPath( entrypoint: string = 'dev', targetDir: string, ): string { const { dir: entryDir, name: entryName } = parse(entrypoint); - const entryPath = join(entryDir, entryName); - const parentPath = resolve(targetDir, entryDir); - const isFile = readdirSync(parentPath).some(base => { - const path = resolve(parentPath, base); - return statSync(path).isFile(); - }); - return isFile ? entryPath : join(entryPath, 'index'); + const [entryFile] = glob.sync(`${resolve(targetDir, entryDir, entryName)}.*`); + if (entryFile) { + return join(entryDir, entryName); + } + return join(entryDir, entryName, 'index'); } export async function startPackage(options: {