UNPKG

1.67 kBJavaScriptView Raw
1const path = require('path');
2const launchEditorMiddleware = require('launch-editor-middleware');
3
4function getDevServerConfig(config) {
5 const isSSR = config.hasSSR && config.devServer.buildSSR;
6 const devServerOpts = Object.assign({}, config.devServer || {});
7
8 const before = devServerOpts.before;
9 const after = devServerOpts.after;
10
11 const ssrOpts = isSSR ? {
12 index: '',
13 historyApiFallback: false,
14 proxy: {
15 context: () => true,
16 target: `http://${devServerOpts.appHost}:${devServerOpts.appPort}`,
17 ws: true,
18 changeOrigin: true,
19 },
20 } : {};
21
22 delete devServerOpts.before;
23 delete devServerOpts.after;
24 delete devServerOpts.wwwHost;
25 delete devServerOpts.appHost;
26 delete devServerOpts.appPort;
27 delete devServerOpts.notifyOnError;
28 delete devServerOpts.open;
29 delete devServerOpts.buildSSR;
30
31 return Object.assign({
32 host: '0.0.0.0',
33 port: 3001,
34 clientLogLevel: 'none',
35 historyApiFallback: true,
36 contentBase: path.join(config.sourcePath, 'public'),
37 watchContentBase: true,
38 hot: true,
39 quiet: true,
40 compress: true,
41 publicPath: config.publicUrl,
42 overlay: {warnings: false, errors: true},
43 https: false,
44 proxy: {},
45 index: 'index.html',
46 inline: true,
47 open: false,
48 progress: false,
49 before(app, server) {
50 // launch editor support.
51 // this works with vue-devtools & @vue/cli-overlay
52 app.use('/__open-in-editor', launchEditorMiddleware('code'));
53
54 // apply in project middlewares
55 if (before) {
56 before(app, server);
57 }
58 },
59 after(app, server) {
60 // apply in project middlewares
61 if (after) {
62 after(app, server);
63 }
64 },
65 }, devServerOpts, ssrOpts);
66}
67
68module.exports = {
69 getDevServerConfig,
70};