diff --git a/packages/@vue/cli-service/lib/util/prepareProxy.js b/packages/@vue/cli-service/lib/util/prepareProxy.js index a65f0f6341..6d2754f85f 100644 --- a/packages/@vue/cli-service/lib/util/prepareProxy.js +++ b/packages/@vue/cli-service/lib/util/prepareProxy.js @@ -27,7 +27,7 @@ module.exports = function prepareProxy (proxy, appPublicFolder) { if (!proxy) { return undefined } - if (Array.isArray(proxy) || (typeof proxy !== 'object' && typeof proxy !== 'string')) { + if (typeof proxy !== 'object' && typeof proxy !== 'string') { console.log( chalk.red( 'When specified, "proxy" in package.json must be a string or an object.' @@ -117,6 +117,14 @@ module.exports = function prepareProxy (proxy, appPublicFolder) { ] } + // Support proxy as an array + if (Array.isArray(proxy)) { + return proxy.map(item => { + if (typeof item === 'function') return item + return Object.assign({}, defaultConfig, item) + }) + } + // Otherwise, proxy is an object so create an array of proxies to pass to webpackDevServer return Object.keys(proxy).map(context => { const config = proxy[context]