From 814f846b99fb4f1528f837fb9ea83278a4aae465 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Sat, 9 Mar 2019 01:08:40 +0800 Subject: [PATCH] feat: support multi-main entry in pages config --- packages/@vue/cli-service/__tests__/multiPage.spec.js | 2 +- packages/@vue/cli-service/lib/config/app.js | 3 ++- packages/@vue/cli-service/lib/options.js | 9 +++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/@vue/cli-service/__tests__/multiPage.spec.js b/packages/@vue/cli-service/__tests__/multiPage.spec.js index e23f924d10..975f0d3ae5 100644 --- a/packages/@vue/cli-service/__tests__/multiPage.spec.js +++ b/packages/@vue/cli-service/__tests__/multiPage.spec.js @@ -15,7 +15,7 @@ async function makeProjectMultiPage (project) { index: { entry: 'src/main.js' }, foo: { entry: 'src/foo.js' }, bar: { entry: 'src/bar.js' }, - foobar: { entry: 'src/foobar.js' } + foobar: { entry: ['src/foobar.js'] } }, chainWebpack: config => { const splitOptions = config.optimization.get('splitChunks') diff --git a/packages/@vue/cli-service/lib/config/app.js b/packages/@vue/cli-service/lib/config/app.js index 985748514b..ee204320a7 100644 --- a/packages/@vue/cli-service/lib/config/app.js +++ b/packages/@vue/cli-service/lib/config/app.js @@ -199,7 +199,8 @@ module.exports = (api, options) => { } // inject entry - webpackConfig.entry(name).add(api.resolve(entry)) + const entries = Array.isArray(entry) ? entry : [entry] + webpackConfig.entry(name).merge(entries.map(e => api.resolve(e))) // resolve page index template const hasDedicatedTemplate = fs.existsSync(api.resolve(template)) diff --git a/packages/@vue/cli-service/lib/options.js b/packages/@vue/cli-service/lib/options.js index 017f1bb677..dc6b3baa56 100644 --- a/packages/@vue/cli-service/lib/options.js +++ b/packages/@vue/cli-service/lib/options.js @@ -15,9 +15,14 @@ const schema = createSchema(joi => joi.object({ pages: joi.object().pattern( /\w+/, joi.alternatives().try([ - joi.string(), + joi.string().required(), + joi.array().items(joi.string().required()), + joi.object().keys({ - entry: joi.string().required() + entry: joi.alternatives().try([ + joi.string().required(), + joi.array().items(joi.string().required()) + ]).required() }).unknown(true) ]) ),