-
Notifications
You must be signed in to change notification settings - Fork 0
/
vue.config.js
97 lines (90 loc) · 1.92 KB
/
vue.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const path = require('path')
const fs = require('fs')
// Generate pages object
const pages = {}
const copyFiles = [
{
from: 'src/manifest.json',
to: 'dist/manifest.json',
},
{
from: 'public/',
to: 'dist/',
},
{
from: 'src/assets',
to: 'dist/assets',
},
]
function getEntryFile(entryPath) {
const files = fs.readdirSync(entryPath)
return files
}
const chromeName = getEntryFile(path.resolve('src/entry'))
function getFileExtension(filename) {
return /[.]/.exec(filename) ? /[^.]+$/.exec(filename)[0] : undefined
}
chromeName.forEach((name) => {
const fileExtension = getFileExtension(name)
const fileName = name.replace(`.${fileExtension}`, '')
if (!fileName.startsWith('_')) {
pages[fileName] = {
entry: `src/entry/${name}`,
template: 'public/index.html',
filename: `${fileName}.html`,
}
}
})
const isDevMode = process.env.NODE_ENV === 'development'
module.exports = {
pages,
filenameHashing: false,
chainWebpack: (config) => {
config
.plugin('copy')
.use(require('copy-webpack-plugin'),
[
{
patterns: copyFiles.map(setting => ({
from: path.resolve(setting.from),
to: path.resolve(setting.to),
})),
},
],
)
.end()
},
configureWebpack: {
output: {
filename: '[name].js',
chunkFilename: '[name].js',
},
devtool: isDevMode ? 'inline-source-map' : false,
},
css: {
extract: false, // Make sure the css is the same
loaderOptions: {
less: {
lessOptions: {
javascriptEnabled: true,
},
},
},
},
pluginOptions: {
windi: {
scan: {
dirs: ['src'],
exclude: [
'node_modules',
'.git',
'public/**/*',
'*.template.html',
'index.html',
],
include: [],
},
transformCSS: 'pre',
},
},
}