From 64933b262d72ec97b750c4309d78cbaa9e7e0f42 Mon Sep 17 00:00:00 2001 From: Andrei Date: Mon, 21 Feb 2022 18:17:21 +0200 Subject: [PATCH 1/6] Fix bug for configureWebpack.output = 'auto' For module-federation need to use output auto ```javascript const { defineConfig } = require('@vue/cli-service') const webpack = require('webpack') module.exports = defineConfig({ configureWebpack: { output: { publicPath: 'auto', // <- ERROR: Avoid modifying webpack output.publicPath directly. Use the "publicPath" option instead. }, optimization: { splitChunks: false, }, plugins: [ new webpack.container.ModuleFederationPlugin({ name: 'vue_cli_demo', filename: 'remoteEntry.js', exposes: { './HelloWorld.vue': './src/components/HelloWorld.vue', }, shared: { vue: { singleton: true, }, }, }), ], }, transpileDependencies: true }) --- packages/@vue/cli-service/lib/util/validateWebpackConfig.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli-service/lib/util/validateWebpackConfig.js b/packages/@vue/cli-service/lib/util/validateWebpackConfig.js index dc61dce76b..1f179bd304 100644 --- a/packages/@vue/cli-service/lib/util/validateWebpackConfig.js +++ b/packages/@vue/cli-service/lib/util/validateWebpackConfig.js @@ -28,7 +28,7 @@ module.exports = function validateWebpackConfig ( ) } - if (target === 'app' && singleConfig.output.publicPath !== options.publicPath) { + if (target === 'app' && ![options.publicPath, 'auto'].includes(singleConfig.output.publicPath)) { throw new Error( `\n\nConfiguration Error: ` + `Avoid modifying webpack output.publicPath directly. ` + From 139e69312197eca29a961cd20205e3b3f0e26fbb Mon Sep 17 00:00:00 2001 From: andreisoroka Date: Fri, 25 Feb 2022 11:15:55 +0200 Subject: [PATCH 2/6] fixed prepareURLs --- packages/@vue/cli-service/lib/util/prepareURLs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/lib/util/prepareURLs.js b/packages/@vue/cli-service/lib/util/prepareURLs.js index 8917e38150..dcc76e8b84 100644 --- a/packages/@vue/cli-service/lib/util/prepareURLs.js +++ b/packages/@vue/cli-service/lib/util/prepareURLs.js @@ -17,14 +17,14 @@ module.exports = function prepareUrls (protocol, host, port, pathname = '/') { protocol, hostname, port, - pathname + pathname: pathname === 'auto' ? '' : pathname }) const prettyPrintUrl = hostname => url.format({ protocol, hostname, port: chalk.bold(port), - pathname + pathname: pathname === 'auto' ? '' : pathname }) const isUnspecifiedHost = host === '0.0.0.0' || host === '::' From 970ade975cc1e2eaa62d1f75d9b3772e393b7d97 Mon Sep 17 00:00:00 2001 From: andreisoroka Date: Fri, 25 Feb 2022 11:16:19 +0200 Subject: [PATCH 3/6] Revert "Fix bug for configureWebpack.output = 'auto'" This reverts commit 64933b262d72ec97b750c4309d78cbaa9e7e0f42. --- packages/@vue/cli-service/lib/util/validateWebpackConfig.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli-service/lib/util/validateWebpackConfig.js b/packages/@vue/cli-service/lib/util/validateWebpackConfig.js index 1f179bd304..dc61dce76b 100644 --- a/packages/@vue/cli-service/lib/util/validateWebpackConfig.js +++ b/packages/@vue/cli-service/lib/util/validateWebpackConfig.js @@ -28,7 +28,7 @@ module.exports = function validateWebpackConfig ( ) } - if (target === 'app' && ![options.publicPath, 'auto'].includes(singleConfig.output.publicPath)) { + if (target === 'app' && singleConfig.output.publicPath !== options.publicPath) { throw new Error( `\n\nConfiguration Error: ` + `Avoid modifying webpack output.publicPath directly. ` + From 4e876b88ff34a494f3b15c6ab85b5ebc627f0832 Mon Sep 17 00:00:00 2001 From: andreisoroka Date: Fri, 25 Feb 2022 11:23:10 +0200 Subject: [PATCH 4/6] updated serve.js --- packages/@vue/cli-service/lib/commands/serve.js | 4 +++- packages/@vue/cli-service/lib/util/prepareURLs.js | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/@vue/cli-service/lib/commands/serve.js b/packages/@vue/cli-service/lib/commands/serve.js index 6ed4ee8b2c..87f9dbb82a 100644 --- a/packages/@vue/cli-service/lib/commands/serve.js +++ b/packages/@vue/cli-service/lib/commands/serve.js @@ -116,7 +116,9 @@ module.exports = (api, options) => { protocol, host, port, - isAbsoluteUrl(options.publicPath) ? '/' : options.publicPath + isAbsoluteUrl(options.publicPath) || options.publicPath === 'auto' + ? '/' + : options.publicPath ) const localUrlForBrowser = publicUrl || urls.localUrlForBrowser diff --git a/packages/@vue/cli-service/lib/util/prepareURLs.js b/packages/@vue/cli-service/lib/util/prepareURLs.js index dcc76e8b84..8917e38150 100644 --- a/packages/@vue/cli-service/lib/util/prepareURLs.js +++ b/packages/@vue/cli-service/lib/util/prepareURLs.js @@ -17,14 +17,14 @@ module.exports = function prepareUrls (protocol, host, port, pathname = '/') { protocol, hostname, port, - pathname: pathname === 'auto' ? '' : pathname + pathname }) const prettyPrintUrl = hostname => url.format({ protocol, hostname, port: chalk.bold(port), - pathname: pathname === 'auto' ? '' : pathname + pathname }) const isUnspecifiedHost = host === '0.0.0.0' || host === '::' From e2cf91a0bca4f9b428efe41a0b8d4cdba8f58d9e Mon Sep 17 00:00:00 2001 From: andreisoroka Date: Fri, 18 Mar 2022 13:44:51 +0200 Subject: [PATCH 5/6] support publicPath auto --- packages/@vue/cli-service/lib/commands/serve.js | 8 ++++---- packages/@vue/cli-service/lib/util/getBaseUrl.js | 3 +++ packages/@vue/cli-service/lib/util/resolveClientEnv.js | 3 ++- 3 files changed, 9 insertions(+), 5 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 87f9dbb82a..a16ca7e492 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,9 +118,7 @@ module.exports = (api, options) => { protocol, host, port, - isAbsoluteUrl(options.publicPath) || options.publicPath === 'auto' - ? '/' - : options.publicPath + isAbsoluteUrl(baseUrl) ? '/' : baseUrl ) const localUrlForBrowser = publicUrl || urls.localUrlForBrowser @@ -189,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 From e9c4080a82477fc9b2729993843169ca685598b4 Mon Sep 17 00:00:00 2001 From: andreisoroka Date: Fri, 18 Mar 2022 14:14:21 +0200 Subject: [PATCH 6/6] fix: eslint --- packages/@vue/cli-service/lib/commands/serve.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-service/lib/commands/serve.js b/packages/@vue/cli-service/lib/commands/serve.js index a16ca7e492..cc66855e8b 100644 --- a/packages/@vue/cli-service/lib/commands/serve.js +++ b/packages/@vue/cli-service/lib/commands/serve.js @@ -5,7 +5,7 @@ const { hasProjectPnpm, IpcMessenger } = require('@vue/cli-shared-utils') -const getBaseUrl = require('../util/getBaseUrl'); +const getBaseUrl = require('../util/getBaseUrl') const defaults = { host: '0.0.0.0', @@ -15,7 +15,7 @@ const defaults = { /** @type {import('@vue/cli-service').ServicePlugin} */ module.exports = (api, options) => { - const baseUrl = getBaseUrl(options); + const baseUrl = getBaseUrl(options) api.registerCommand('serve', { description: 'start development server', usage: 'vue-cli-service serve [options] [entry]',