Skip to content

Commit 30f2aad

Browse files
authored
feat: support multi-main entry in pages config (#3595)
1 parent 1d14d4d commit 30f2aad

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

packages/@vue/cli-service/__tests__/multiPage.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ async function makeProjectMultiPage (project) {
1515
index: { entry: 'src/main.js' },
1616
foo: { entry: 'src/foo.js' },
1717
bar: { entry: 'src/bar.js' },
18-
foobar: { entry: 'src/foobar.js' }
18+
foobar: { entry: ['src/foobar.js'] }
1919
},
2020
chainWebpack: config => {
2121
const splitOptions = config.optimization.get('splitChunks')

packages/@vue/cli-service/lib/config/app.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,8 @@ module.exports = (api, options) => {
199199
}
200200

201201
// inject entry
202-
webpackConfig.entry(name).add(api.resolve(entry))
202+
const entries = Array.isArray(entry) ? entry : [entry]
203+
webpackConfig.entry(name).merge(entries.map(e => api.resolve(e)))
203204

204205
// resolve page index template
205206
const hasDedicatedTemplate = fs.existsSync(api.resolve(template))

packages/@vue/cli-service/lib/options.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,14 @@ const schema = createSchema(joi => joi.object({
1515
pages: joi.object().pattern(
1616
/\w+/,
1717
joi.alternatives().try([
18-
joi.string(),
18+
joi.string().required(),
19+
joi.array().items(joi.string().required()),
20+
1921
joi.object().keys({
20-
entry: joi.string().required()
22+
entry: joi.alternatives().try([
23+
joi.string().required(),
24+
joi.array().items(joi.string().required())
25+
]).required()
2126
}).unknown(true)
2227
])
2328
),

0 commit comments

Comments
 (0)