Skip to content

Commit 601a373

Browse files
author
kacper-paczos
committed
refactor(utils): simplify config port parsing in dev server detection
Let parsePortFromConfigFile return null when no port is found and apply framework default ports in the detector layer instead.
1 parent 347ad7d commit 601a373

5 files changed

Lines changed: 36 additions & 16 deletions

File tree

packages/utils/src/lib/dev-server/detect-dev-server-url.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export async function resolveDevServerUrlPrompt(
5959
return {
6060
default: detection.url,
6161
message:
62-
detection.source != null && detection.source !== 'fallback'
62+
detection.source !== 'fallback'
6363
? `Target URL(s) (detected from ${detection.source}, comma-separated):`
6464
: 'Target URL(s) (comma-separated):',
6565
};

packages/utils/src/lib/dev-server/detectors.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,6 @@ const configFileDetector: DevServerDetector = {
168168

169169
for (const file of files) {
170170
const filePath = path.join(targetDir, file);
171-
if (!(await fileExists(filePath))) {
172-
continue;
173-
}
174171

175172
for (const detector of CONFIG_FILE_DETECTORS) {
176173
if (!detector.pattern.test(file)) {
@@ -179,7 +176,6 @@ const configFileDetector: DevServerDetector = {
179176

180177
const port =
181178
(await parsePortFromConfigFile(filePath, {
182-
defaultPort: detector.defaultPort,
183179
sections: [...detector.sections],
184180
})) ?? detector.defaultPort;
185181

@@ -191,7 +187,6 @@ const configFileDetector: DevServerDetector = {
191187
) {
192188
const port =
193189
(await parsePortFromConfigFile(filePath, {
194-
defaultPort: DEV_SERVER_PORTS.vueCli,
195190
sections: ['devServer'],
196191
})) ?? DEV_SERVER_PORTS.vueCli;
197192

packages/utils/src/lib/dev-server/parse-config-port.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,7 @@ export function parseLoosePort(content: string): number | null {
1818

1919
export async function parsePortFromConfigFile(
2020
filePath: string,
21-
{
22-
defaultPort,
23-
sections = ['server', 'devServer'],
24-
}: {
25-
defaultPort: number;
26-
sections?: string[];
27-
},
21+
{ sections = ['server', 'devServer'] }: { sections?: string[] } = {},
2822
): Promise<number | null> {
2923
try {
3024
const content = await readTextFile(filePath);
@@ -34,7 +28,7 @@ export async function parsePortFromConfigFile(
3428
return sectionPort;
3529
}
3630
}
37-
return parseLoosePort(content) ?? defaultPort;
31+
return parseLoosePort(content);
3832
} catch {
3933
return null;
4034
}

packages/utils/src/lib/dev-server/parse-config-port.unit.test.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { parseLoosePort, parsePortFromSection } from './parse-config-port.js';
1+
import {
2+
parseLoosePort,
3+
parsePortFromConfigFile,
4+
parsePortFromSection,
5+
} from './parse-config-port.js';
26

37
describe('parsePortFromSection', () => {
48
it('should parse port from a named config section', () => {
@@ -21,4 +25,31 @@ describe('parseLoosePort', () => {
2125
parseLoosePort('const port = 1; export default { port: 4321 }'),
2226
).toBe(4321);
2327
});
28+
29+
it('should return first port when multiple appear', () => {
30+
expect(
31+
parseLoosePort('const x = { port: 1234 }; const y = { port: 5678 }'),
32+
).toBe(1234);
33+
});
34+
35+
it('should return null when no port is present', () => {
36+
expect(parseLoosePort('export default {}')).toBeNull();
37+
});
38+
});
39+
40+
describe('parsePortFromConfigFile', () => {
41+
it('should return null when file does not exist', async () => {
42+
await expect(
43+
parsePortFromConfigFile('/nonexistent/vite.config.ts'),
44+
).resolves.toBeNull();
45+
});
46+
47+
it('should return null when file has no port', async () => {
48+
await expect(
49+
parsePortFromConfigFile(
50+
new URL('./parse-config-port.unit.test.ts', import.meta.url).pathname,
51+
{ sections: ['server'] },
52+
),
53+
).resolves.toBeNull();
54+
});
2455
});

packages/utils/src/lib/dev-server/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export type DevServerDetectionResult = {
22
url: string;
33
port: number;
4-
source: string | null;
4+
source: string;
55
};
66

77
export type DevServerDetector = {

0 commit comments

Comments
 (0)