From e3b7eae405de95c75c364f86569d7c52c5178203 Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Tue, 29 Dec 2020 16:22:39 +0300 Subject: [PATCH] fix: respect `output.publicPath` for serve --- packages/serve/src/startDevServer.ts | 4 ++++ packages/serve/src/types.ts | 1 + test/serve/basic/serve-basic.test.js | 12 ++++++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/serve/src/startDevServer.ts b/packages/serve/src/startDevServer.ts index 08a9478cc76..19dcbee365a 100644 --- a/packages/serve/src/startDevServer.ts +++ b/packages/serve/src/startDevServer.ts @@ -68,6 +68,10 @@ export default async function startDevServer(compiler, cliOptions, logger): Prom options.client = options.client || {}; options.client.port = options.client.port || options.port; } else { + if (!options.publicPath && compiler.options.output && compiler.options.output.publicPath) { + options.publicPath = compiler.options.output.publicPath === 'auto' ? '/' : compiler.options.output.publicPath; + } + options.host = options.host || 'localhost'; options.port = options.port || 8080; } diff --git a/packages/serve/src/types.ts b/packages/serve/src/types.ts index 61c59c5543a..f4a1b276fd0 100644 --- a/packages/serve/src/types.ts +++ b/packages/serve/src/types.ts @@ -27,6 +27,7 @@ export type devServerOptionsType = { static?: boolean | string | object | (string | object)[]; transportMode?: object | string; useLocalIp?: boolean; + publicPath?: undefined; }; type devServerClientOptions = { diff --git a/test/serve/basic/serve-basic.test.js b/test/serve/basic/serve-basic.test.js index b65482a221c..2d69fb44aec 100644 --- a/test/serve/basic/serve-basic.test.js +++ b/test/serve/basic/serve-basic.test.js @@ -141,8 +141,16 @@ describe('basic serve usage', () => { expect(stdout.match(/HotModuleReplacementPlugin/g)).toHaveLength(1); }); - // TODO uncomment for webpack-dev-server@4 - it.skip('should work with the "--output-public-path" option', async () => { + it('should work with the default "publicPath" option', async () => { + const { stderr, stdout } = await runServe(['serve'], __dirname); + + expect(stderr).toBeFalsy(); + expect(stdout).toContain('main.js'); + expect(stdout).toContain('from /'); + expect(stdout.match(/HotModuleReplacementPlugin/g)).toBeNull(); + }); + + it('should work with the "--output-public-path" option', async () => { const { stderr, stdout } = await runServe(['serve', '--output-public-path', '/my-public-path/'], __dirname); expect(stderr).toBeFalsy();