From 17af05acc82dc0ba0fef0eafaeba5f81d5d11f46 Mon Sep 17 00:00:00 2001 From: Aaron Date: Thu, 5 Dec 2024 11:48:49 -0600 Subject: [PATCH] fix: Prevent changing dev server port when reloading config (#1241) --- packages/wxt/e2e/tests/dev.test.ts | 24 ++++++++++++++++++++++++ packages/wxt/src/core/wxt.ts | 8 ++++++++ 2 files changed, 32 insertions(+) create mode 100644 packages/wxt/e2e/tests/dev.test.ts diff --git a/packages/wxt/e2e/tests/dev.test.ts b/packages/wxt/e2e/tests/dev.test.ts new file mode 100644 index 00000000..c782bb94 --- /dev/null +++ b/packages/wxt/e2e/tests/dev.test.ts @@ -0,0 +1,24 @@ +import { describe, it, expect } from 'vitest'; +import { TestProject } from '../utils'; + +describe('Dev Mode', () => { + it('should not change ports when restarting the server', async () => { + const project = new TestProject(); + project.addFile( + 'entrypoints/background.ts', + 'export default defineBackground(() => {})', + ); + + const server = await project.startServer({ + runner: { + disabled: true, + }, + }); + const initialPort = server.port; + await server.restart(); + const finalPort = server.port; + await server.stop(); + + expect(finalPort).toBe(initialPort); + }); +}); diff --git a/packages/wxt/src/core/wxt.ts b/packages/wxt/src/core/wxt.ts index eaad5233..2c616b75 100644 --- a/packages/wxt/src/core/wxt.ts +++ b/packages/wxt/src/core/wxt.ts @@ -36,6 +36,14 @@ export async function registerWxt( return config.logger; }, async reloadConfig() { + // Prevent changing the server port when resolving config multiple times + // get-port-please doesn't always return the same port if it was recently closed. + if (wxt.config.dev.server?.port) { + inlineConfig.dev ??= {}; + inlineConfig.dev.server ??= {}; + inlineConfig.dev.server.port = wxt.config.dev.server.port; + } + wxt.config = await resolveConfig(inlineConfig, command); await wxt.hooks.callHook('config:resolved', wxt); },