From f8a07f0acc9d7d725b3bf0bc247b5c2007d88945 Mon Sep 17 00:00:00 2001 From: Anthony Gubler Date: Thu, 24 Jan 2019 11:09:28 +0000 Subject: [PATCH] try to serve static before rewrites and also serve after rewrites --- src/main.ts | 30 ++++++++++++++++++------------ tests/unit/main.ts | 2 +- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main.ts b/src/main.ts index 84ee4201..4d3b3759 100644 --- a/src/main.ts +++ b/src/main.ts @@ -45,6 +45,20 @@ function createWatchCompiler(config: webpack.Configuration) { return compiler; } +function serveStatic(app: express.Application, outputDir: string, mode: string, compression?: string[]) { + if (mode === 'dist' && Array.isArray(compression)) { + const useBrotli = compression.indexOf('brotli') > -1; + app.use( + expressStaticGzip(outputDir, { + enableBrotli: useBrotli, + orderPreference: useBrotli ? ['br'] : undefined + }) + ); + } else { + app.use(express.static(outputDir)); + } +} + function build(config: webpack.Configuration, args: any) { const compiler = createCompiler(config); const spinner = ora('building').start(); @@ -137,6 +151,9 @@ function serve(config: webpack.Configuration, args: any): Promise { }) ); + const outputDir = (config.output && config.output.path) || process.cwd(); + serveStatic(app, outputDir, args.mode, args.compression); + app.use( history({ rewrites: [ @@ -163,18 +180,7 @@ function serve(config: webpack.Configuration, args: any): Promise { }) ); - const outputDir = (config.output && config.output.path) || process.cwd(); - if (args.mode === 'dist' && Array.isArray(args.compression)) { - const useBrotli = args.compression.includes('brotli'); - app.use( - expressStaticGzip(outputDir, { - enableBrotli: useBrotli, - orderPreference: useBrotli ? ['br'] : undefined - }) - ); - } else { - app.use(express.static(outputDir)); - } + serveStatic(app, outputDir, args.mode, args.compression); if (args.proxy) { Object.keys(args.proxy).forEach((context) => { diff --git a/tests/unit/main.ts b/tests/unit/main.ts index 5f5e80e3..ffe66e6a 100644 --- a/tests/unit/main.ts +++ b/tests/unit/main.ts @@ -466,7 +466,7 @@ describe('command', () => { watch: true }) .then(() => { - assert.strictEqual(useStub.callCount, 4); + assert.strictEqual(useStub.callCount, 5); assert.isTrue( hotMiddleware.calledWith(compiler, { heartbeat: 10000