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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
| const { createSchema, validate } = require('@vue/cli-shared-utils')
|
| const schema = createSchema(joi => joi.object({
| publicPath: joi.string().allow(''),
| outputDir: joi.string(),
| assetsDir: joi.string().allow(''),
| indexPath: joi.string(),
| filenameHashing: joi.boolean(),
| runtimeCompiler: joi.boolean(),
| transpileDependencies: joi.array(),
| productionSourceMap: joi.boolean(),
| parallel: joi.alternatives().try([
| joi.boolean(),
| joi.number().integer()
| ]),
| devServer: joi.object(),
| pages: joi.object().pattern(
| /\w+/,
| joi.alternatives().try([
| joi.string().required(),
| joi.array().items(joi.string().required()),
|
| joi.object().keys({
| entry: joi.alternatives().try([
| joi.string().required(),
| joi.array().items(joi.string().required())
| ]).required()
| }).unknown(true)
| ])
| ),
| crossorigin: joi.string().valid(['', 'anonymous', 'use-credentials']),
| integrity: joi.boolean(),
|
| // css
| css: joi.object({
| // TODO: deprecate this after joi 16 release
| modules: joi.boolean(),
| requireModuleExtension: joi.boolean(),
| extract: joi.alternatives().try(joi.boolean(), joi.object()),
| sourceMap: joi.boolean(),
| loaderOptions: joi.object({
| css: joi.object(),
| sass: joi.object(),
| scss: joi.object(),
| less: joi.object(),
| stylus: joi.object(),
| postcss: joi.object()
| })
| }),
|
| // webpack
| chainWebpack: joi.func(),
| configureWebpack: joi.alternatives().try(
| joi.object(),
| joi.func()
| ),
|
| // known runtime options for built-in plugins
| lintOnSave: joi.any().valid([true, false, 'error', 'warning', 'default']),
| pwa: joi.object(),
|
| // 3rd party plugin options
| pluginOptions: joi.object()
| }))
|
| exports.validate = (options, cb) => {
| validate(options, schema, cb)
| }
|
| // #2110
| // https://github.com/nodejs/node/issues/19022
| // in some cases cpus() returns undefined, and may simply throw in the future
| function hasMultipleCores () {
| try {
| return require('os').cpus().length > 1
| } catch (e) {
| return false
| }
| }
|
| exports.defaults = () => ({
| // project deployment base
| publicPath: '/',
|
| // where to output built files
| outputDir: 'dist',
|
| // where to put static assets (js/css/img/font/...)
| assetsDir: '',
|
| // filename for index.html (relative to outputDir)
| indexPath: 'index.html',
|
| // whether filename will contain hash part
| filenameHashing: true,
|
| // boolean, use full build?
| runtimeCompiler: false,
|
| // deps to transpile
| transpileDependencies: [
| /* string or regex */
| ],
|
| // sourceMap for production build?
| productionSourceMap: !process.env.VUE_CLI_TEST,
|
| // use thread-loader for babel & TS in production build
| // enabled by default if the machine has more than 1 cores
| parallel: hasMultipleCores(),
|
| // multi-page config
| pages: undefined,
|
| // <script type="module" crossorigin="use-credentials">
| // #1656, #1867, #2025
| crossorigin: undefined,
|
| // subresource integrity
| integrity: false,
|
| css: {
| // extract: true,
| // modules: false,
| // sourceMap: false,
| // loaderOptions: {}
| },
|
| // whether to use eslint-loader
| lintOnSave: 'default',
|
| devServer: {
| /*
| open: process.platform === 'darwin',
| host: '0.0.0.0',
| port: 8080,
| https: false,
| hotOnly: false,
| proxy: null, // string | Object
| before: app => {}
| */
| }
| })
|
|