Skip to content

Commit b0083e7

Browse files
committed
fix(pages): fixed build multiple pages config
1 parent 404c7f2 commit b0083e7

File tree

5 files changed

+83
-80
lines changed

5 files changed

+83
-80
lines changed

README.md

Lines changed: 42 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -769,25 +769,22 @@ htmlWebpackPlugin.options.cdn.js) { %>
769769

770770
```javascript
771771
module.exports = {
772-
main: {
773-
template: "public/index.html",
774-
filename: "index.html",
775-
title: "主页",
776-
chunks: ["chunk-vendors", "chunk-common", "index"]
772+
'admin': {
773+
template: 'public/index.html',
774+
filename: 'admin.html',
775+
title: '后台管理',
777776
},
778-
"pages/admin": {
779-
template: "public/index.html",
780-
filename: "admin.html",
781-
title: "后台管理",
782-
chunks: ["chunk-vendors", "chunk-common", "index"]
777+
'mobile': {
778+
template: 'public/index.html',
779+
filename: 'mobile.html',
780+
title: '移动端',
783781
},
784-
"pages/mobile": {
785-
template: "public/index.html",
786-
filename: "mobile.html",
787-
title: "移动端",
788-
chunks: ["chunk-vendors", "chunk-common", "index"]
782+
'pc/crm': {
783+
template: 'public/index.html',
784+
filename: 'pc-crm.html',
785+
title: '预发服务',
789786
}
790-
};
787+
}
791788
```
792789

793790
- vue.config.js
@@ -799,22 +796,18 @@ const glob = require("glob");
799796
const pagesInfo = require("./pages.config");
800797
const pages = {};
801798

802-
glob.sync("./src/**/main.js").forEach(p => {
803-
let result = p.match(/\.\/src\/(.*)\/main\.js/);
804-
result = result ? result[1] : "";
805-
const key = result ? result : "main";
806-
if (pagesInfo[key]) {
807-
pages[key] = {
808-
entry: result ? `src/${result}/main.js` : "src/main.js"
809-
};
810-
for (const info in pagesInfo[key]) {
811-
pages[key] = {
812-
...pages[key],
813-
[info]: pagesInfo[key][info]
814-
};
799+
glob.sync('./src/pages/**/main.js').forEach(entry => {
800+
let chunk = entry.match(/\.\/src\/pages\/(.*)\/main\.js/)[1];
801+
const curr = pagesInfo[chunk];
802+
if (curr) {
803+
pages[chunk] = {
804+
entry,
805+
...curr,
806+
chunk: ["chunk-vendors", "chunk-common", chunk]
815807
}
816808
}
817-
});
809+
})
810+
818811
module.exports = {
819812
chainWebpack: config => {
820813
// 防止多页面打包卡顿
@@ -837,19 +830,14 @@ const glob = require("glob");
837830
const pagesInfo = require("./pages.config");
838831
const pages = {};
839832

840-
glob.sync("./src/**/main.js").forEach(p => {
841-
let result = p.match(/\.\/src\/(.*)\/main\.js/);
842-
result = result ? result[1] : "";
843-
const key = result ? result : "main";
844-
if (pagesInfo[key]) {
845-
pages[key] = {
846-
entry: result ? `src/${result}/main.js` : "src/main.js"
847-
};
848-
for (const info in pagesInfo[key]) {
849-
pages[key] = {
850-
...pages[key],
851-
[info]: pagesInfo[key][info]
852-
};
833+
glob.sync('./src/pages/**/main.js').forEach(entry => {
834+
let chunk = entry.match(/\.\/src\/pages\/(.*)\/main\.js/)[1];
835+
const curr = pagesInfo[chunk];
836+
if (curr) {
837+
pages[chunk] = {
838+
entry,
839+
...curr,
840+
chunk: ["chunk-vendors", "chunk-common", chunk]
853841
}
854842
}
855843
});
@@ -883,7 +871,6 @@ module.exports = {
883871

884872
// 多页面cdn添加
885873
Object.keys(pagesInfo).forEach(page => {
886-
console.log(page);
887874
config.plugin(`html-${page}`).tap(args => {
888875
// html中添加cdn
889876
args[0].cdn = cdn;
@@ -1412,19 +1399,14 @@ const glob = require('glob')
14121399
const pagesInfo = require('./pages.config')
14131400
const pages = {}
14141401

1415-
glob.sync('./src/**/main.js').forEach(p => {
1416-
let result = p.match(/\.\/src\/(.*)\/main\.js/)
1417-
result = result ? result[1] : '';
1418-
const key = result ? result : 'main';
1419-
if (pagesInfo[key]) {
1420-
pages[key] = {
1421-
entry: result ? `src/${result}/main.js` : 'src/main.js'
1422-
}
1423-
for (const info in pagesInfo[key]) {
1424-
pages[key] = {
1425-
...pages[key],
1426-
[info]: pagesInfo[key][info]
1427-
}
1402+
glob.sync('./src/pages/**/main.js').forEach(entry => {
1403+
let chunk = entry.match(/\.\/src\/pages\/(.*)\/main\.js/)[1];
1404+
const curr = pagesInfo[chunk];
1405+
if (curr) {
1406+
pages[chunk] = {
1407+
entry,
1408+
...curr,
1409+
chunk: ["chunk-vendors", "chunk-common", chunk]
14281410
}
14291411
}
14301412
})
@@ -1542,6 +1524,9 @@ module.exports = {
15421524
// 修复HMR
15431525
config.resolve.symlinks(true);
15441526

1527+
// config.plugins.delete('preload');
1528+
// config.plugins.delete('prefetch');
1529+
15451530
config
15461531
.plugin("ignore")
15471532
.use(

pages.config.js

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
module.exports = {
2-
'main': {
3-
template: 'public/index.html',
4-
filename: 'index.html',
5-
title: '主页',
6-
chunks: ['chunk-vendors', 'chunk-common', 'index']
7-
},
8-
'pages/admin': {
2+
'admin': {
93
template: 'public/index.html',
104
filename: 'admin.html',
115
title: '后台管理',
12-
chunks: ['chunk-vendors', 'chunk-common', 'index']
136
},
14-
'pages/mobile': {
7+
'mobile': {
158
template: 'public/index.html',
169
filename: 'mobile.html',
1710
title: '移动端',
18-
chunks: ['chunk-vendors', 'chunk-common', 'index']
11+
},
12+
'pc/crm': {
13+
template: 'public/index.html',
14+
filename: 'pc-crm.html',
15+
title: '预发服务',
1916
}
2017
}

src/pages/pc/crm/App.vue

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<template>
2+
<div>
3+
Mobile
4+
</div>
5+
</template>
6+
7+
<script>
8+
export default {
9+
10+
}
11+
</script>
12+
13+
<style scoped>
14+
</style>

src/pages/pc/crm/main.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import Vue from 'vue';
2+
3+
import App from './App.vue';
4+
5+
Vue.config.productionTip = false
6+
7+
new Vue({
8+
render: h => h(App)
9+
}).$mount('#app')

vue.config.js

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,14 @@ const glob = require('glob')
1212
const pagesInfo = require('./pages.config')
1313
const pages = {}
1414

15-
glob.sync('./src/**/main.js').forEach(p => {
16-
let result = p.match(/\.\/src\/(.*)\/main\.js/)
17-
result = result ? result[1] : '';
18-
const key = result ? result : 'main';
19-
if (pagesInfo[key]) {
20-
pages[key] = {
21-
entry: result ? `src/${result}/main.js` : 'src/main.js'
22-
}
23-
for (const info in pagesInfo[key]) {
24-
pages[key] = {
25-
...pages[key],
26-
[info]: pagesInfo[key][info]
27-
}
15+
glob.sync('./src/pages/**/main.js').forEach(entry => {
16+
let chunk = entry.match(/\.\/src\/pages\/(.*)\/main\.js/)[1];
17+
const curr = pagesInfo[chunk];
18+
if (curr) {
19+
pages[chunk] = {
20+
entry,
21+
...curr,
22+
chunk: ["chunk-vendors", "chunk-common", chunk]
2823
}
2924
}
3025
})
@@ -142,6 +137,9 @@ module.exports = {
142137
// 修复HMR
143138
config.resolve.symlinks(true);
144139

140+
// config.plugins.delete('preload');
141+
// config.plugins.delete('prefetch');
142+
145143
config
146144
.plugin("ignore")
147145
.use(

0 commit comments

Comments
 (0)