From c5cfefbb072e21ad1251b5f913b8675aca15425c Mon Sep 17 00:00:00 2001 From: Andrei Date: Tue, 22 Mar 2022 16:11:02 +0200 Subject: [PATCH] Better handling of `publicPath: 'auto'` (#7005) --- packages/@vue/cli-service/lib/commands/serve.js | 6 ++++-- packages/@vue/cli-service/lib/util/getBaseUrl.js | 3 +++ packages/@vue/cli-service/lib/util/resolveClientEnv.js | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 packages/@vue/cli-service/lib/util/getBaseUrl.js diff --git a/packages/@vue/cli-service/lib/commands/serve.js b/packages/@vue/cli-service/lib/commands/serve.js index 6ed4ee8b2c..cc66855e8b 100644 --- a/packages/@vue/cli-service/lib/commands/serve.js +++ b/packages/@vue/cli-service/lib/commands/serve.js @@ -5,6 +5,7 @@ const { hasProjectPnpm, IpcMessenger } = require('@vue/cli-shared-utils') +const getBaseUrl = require('../util/getBaseUrl') const defaults = { host: '0.0.0.0', @@ -14,6 +15,7 @@ const defaults = { /** @type {import('@vue/cli-service').ServicePlugin} */ module.exports = (api, options) => { + const baseUrl = getBaseUrl(options) api.registerCommand('serve', { description: 'start development server', usage: 'vue-cli-service serve [options] [entry]', @@ -116,7 +118,7 @@ module.exports = (api, options) => { protocol, host, port, - isAbsoluteUrl(options.publicPath) ? '/' : options.publicPath + isAbsoluteUrl(baseUrl) ? '/' : baseUrl ) const localUrlForBrowser = publicUrl || urls.localUrlForBrowser @@ -187,7 +189,7 @@ module.exports = (api, options) => { 'text/html', 'application/xhtml+xml' ], - rewrites: genHistoryApiFallbackRewrites(options.publicPath, options.pages) + rewrites: genHistoryApiFallbackRewrites(baseUrl, options.pages) }, hot: !isProduction }, projectDevServerOptions, { diff --git a/packages/@vue/cli-service/lib/util/getBaseUrl.js b/packages/@vue/cli-service/lib/util/getBaseUrl.js new file mode 100644 index 0000000000..e8b4497229 --- /dev/null +++ b/packages/@vue/cli-service/lib/util/getBaseUrl.js @@ -0,0 +1,3 @@ +module.exports = function getBaseUrl (options) { + return options.publicPath === 'auto' ? '' : options.publicPath +} diff --git a/packages/@vue/cli-service/lib/util/resolveClientEnv.js b/packages/@vue/cli-service/lib/util/resolveClientEnv.js index 2aa83f1554..dd4a7e2d56 100644 --- a/packages/@vue/cli-service/lib/util/resolveClientEnv.js +++ b/packages/@vue/cli-service/lib/util/resolveClientEnv.js @@ -1,3 +1,4 @@ +const getBaseUrl = require('./getBaseUrl') const prefixRE = /^VUE_APP_/ module.exports = function resolveClientEnv (options, raw) { @@ -7,7 +8,7 @@ module.exports = function resolveClientEnv (options, raw) { env[key] = process.env[key] } }) - env.BASE_URL = options.publicPath + env.BASE_URL = getBaseUrl(options) if (raw) { return env