diff --git a/src/scripts/__tests__/server.spec.ts b/src/scripts/__tests__/server.spec.ts index 57b579291..ff0206caa 100644 --- a/src/scripts/__tests__/server.spec.ts +++ b/src/scripts/__tests__/server.spec.ts @@ -4,7 +4,7 @@ import getConfig from '../config'; jest.mock('../create-server', () => () => { return { app: { - listen: (port: number, host: string, cb: () => void) => cb(), + startCallback: (cb: () => void) => cb(), close: (cb: () => void) => cb(), }, compiler: {}, @@ -19,6 +19,6 @@ test('server should return an object containing a server instance', () => { expect(callback).toBeCalled(); expect(serverInfo.app).toBeTruthy(); expect(serverInfo.compiler).toBeTruthy(); - expect(typeof serverInfo.app.listen).toBe('function'); + expect(typeof serverInfo.app.startCallback).toBe('function'); expect(typeof serverInfo.app.close).toBe('function'); }); diff --git a/src/scripts/create-server.ts b/src/scripts/create-server.ts index 0daee68a3..814f9b010 100644 --- a/src/scripts/create-server.ts +++ b/src/scripts/create-server.ts @@ -1,6 +1,5 @@ -import webpack, { Configuration } from 'webpack'; -import WebpackDevServer from 'webpack-dev-server'; -import merge from 'webpack-merge'; +import webpack from 'webpack'; +import WebpackDevServer, { Configuration } from 'webpack-dev-server'; import makeWebpackConfig from './make-webpack-config'; import * as Rsg from '../typings'; @@ -10,26 +9,37 @@ export default function createServer( ): { app: WebpackDevServer; compiler: webpack.Compiler } { const webpackConfig = makeWebpackConfig(config, env); - const baseConfig = { + const baseConfig: Partial = { + host: config.serverHost, + port: config.serverPort, compress: true, hot: true, client: { logging: 'none', }, - static: { - directory: config.assetsDir, - watch: config.assetsDir !== undefined, - publicPath: '/', - }, + static: Array.isArray(config.assetsDir) + ? config.assetsDir.map((assetsDir) => ({ + directory: assetsDir, + watch: true, + publicPath: '/', + })) + : { + directory: config.assetsDir, + watch: true, + publicPath: '/', + }, devMiddleware: { stats: webpackConfig.stats || {}, }, - } as Configuration; + }; - const webpackDevServerConfig = merge(baseConfig, webpackConfig.devServer as Configuration); + const webpackDevServerConfig: Configuration = { + ...webpackConfig.devServer, + ...baseConfig, + }; const compiler = webpack(webpackConfig); - const devServer = new WebpackDevServer(compiler, webpackDevServerConfig); + const devServer = new WebpackDevServer(webpackDevServerConfig, compiler); // User defined customizations if (config.configureServer) { diff --git a/src/scripts/server.ts b/src/scripts/server.ts index 0fa54308a..a3e714f7b 100644 --- a/src/scripts/server.ts +++ b/src/scripts/server.ts @@ -10,7 +10,7 @@ export default function server( const env = 'development'; const serverInfo = createServer(config, env); - serverInfo.app.listen(config.serverPort, config.serverHost, callback); + serverInfo.app.startCallback(callback); return serverInfo; }