From 4aa56540ad0b15b7ae51941ee3a971fbdb996c3b Mon Sep 17 00:00:00 2001 From: nooooooom Date: Wed, 21 Sep 2022 18:41:51 +0800 Subject: [PATCH] fix(cli-service): compatible with `webpackServe.static` option --- .../@vue/cli-service/lib/commands/serve.js | 37 +++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/packages/@vue/cli-service/lib/commands/serve.js b/packages/@vue/cli-service/lib/commands/serve.js index aef507398c..dfa37f075c 100644 --- a/packages/@vue/cli-service/lib/commands/serve.js +++ b/packages/@vue/cli-service/lib/commands/serve.js @@ -214,13 +214,14 @@ module.exports = (api, options) => { proxy: proxySettings, - static: { - directory: api.resolve('public'), - publicPath: options.publicPath, - watch: !isProduction, - - ...projectDevServerOptions.static - }, + static: genDevServerStatic( + { + directory: api.resolve('public'), + publicPath: options.publicPath, + watch: !isProduction + }, + projectDevServerOptions.static + ), client: { webSocketURL, @@ -392,6 +393,28 @@ function genHistoryApiFallbackRewrites (baseUrl, pages = {}) { ] } +function genDevServerStatic (defaultOptions, userStatic) { + if (typeof userStatic === 'boolean') { + return userStatic ? defaultOptions : undefined + } + if (typeof userStatic === 'string') { + return { + ...defaultOptions, + directory: userStatic + } + } + if (Array.isArray(userStatic)) { + return userStatic.map((s) => genDevServerStatic(defaultOptions, s)) + } + if (typeof userStatic === 'object') { + return { + ...defaultOptions, + ...userStatic + } + } + return defaultOptions +} + module.exports.defaultModes = { serve: 'development' }