1 | const { createSchema, validate } = require('@vue/cli-shared-utils')
|
2 |
|
3 | const schema = createSchema(joi => joi.object({
|
4 | publicPath: joi.string().allow(''),
|
5 | outputDir: joi.string(),
|
6 | assetsDir: joi.string().allow(''),
|
7 | indexPath: joi.string(),
|
8 | filenameHashing: joi.boolean(),
|
9 | runtimeCompiler: joi.boolean(),
|
10 | transpileDependencies: joi.array(),
|
11 | productionSourceMap: joi.boolean(),
|
12 | parallel: joi.alternatives().try([
|
13 | joi.boolean(),
|
14 | joi.number().integer()
|
15 | ]),
|
16 | devServer: joi.object(),
|
17 | pages: joi.object().pattern(
|
18 | /\w+/,
|
19 | joi.alternatives().try([
|
20 | joi.string().required(),
|
21 | joi.array().items(joi.string().required()),
|
22 |
|
23 | joi.object().keys({
|
24 | entry: joi.alternatives().try([
|
25 | joi.string().required(),
|
26 | joi.array().items(joi.string().required())
|
27 | ]).required()
|
28 | }).unknown(true)
|
29 | ])
|
30 | ),
|
31 | crossorigin: joi.string().valid(['', 'anonymous', 'use-credentials']),
|
32 | integrity: joi.boolean(),
|
33 |
|
34 |
|
35 | css: joi.object({
|
36 |
|
37 | modules: joi.boolean(),
|
38 | requireModuleExtension: joi.boolean(),
|
39 | extract: joi.alternatives().try(joi.boolean(), joi.object()),
|
40 | sourceMap: joi.boolean(),
|
41 | loaderOptions: joi.object({
|
42 | css: joi.object(),
|
43 | sass: joi.object(),
|
44 | scss: joi.object(),
|
45 | less: joi.object(),
|
46 | stylus: joi.object(),
|
47 | postcss: joi.object()
|
48 | })
|
49 | }),
|
50 |
|
51 |
|
52 | chainWebpack: joi.func(),
|
53 | configureWebpack: joi.alternatives().try(
|
54 | joi.object(),
|
55 | joi.func()
|
56 | ),
|
57 |
|
58 |
|
59 | lintOnSave: joi.any().valid([true, false, 'error', 'warning', 'default']),
|
60 | pwa: joi.object(),
|
61 |
|
62 |
|
63 | pluginOptions: joi.object()
|
64 | }))
|
65 |
|
66 | exports.validate = (options, cb) => {
|
67 | validate(options, schema, cb)
|
68 | }
|
69 |
|
70 |
|
71 |
|
72 |
|
73 | function hasMultipleCores () {
|
74 | try {
|
75 | return require('os').cpus().length > 1
|
76 | } catch (e) {
|
77 | return false
|
78 | }
|
79 | }
|
80 |
|
81 | exports.defaults = () => ({
|
82 |
|
83 | publicPath: '/',
|
84 |
|
85 |
|
86 | outputDir: 'dist',
|
87 |
|
88 |
|
89 | assetsDir: '',
|
90 |
|
91 |
|
92 | indexPath: 'index.html',
|
93 |
|
94 |
|
95 | filenameHashing: true,
|
96 |
|
97 |
|
98 | runtimeCompiler: false,
|
99 |
|
100 |
|
101 | transpileDependencies: [
|
102 |
|
103 | ],
|
104 |
|
105 |
|
106 | productionSourceMap: !process.env.VUE_CLI_TEST,
|
107 |
|
108 |
|
109 |
|
110 | parallel: hasMultipleCores(),
|
111 |
|
112 |
|
113 | pages: undefined,
|
114 |
|
115 |
|
116 |
|
117 | crossorigin: undefined,
|
118 |
|
119 |
|
120 | integrity: false,
|
121 |
|
122 | css: {
|
123 |
|
124 |
|
125 |
|
126 |
|
127 | },
|
128 |
|
129 |
|
130 | lintOnSave: 'default',
|
131 |
|
132 | devServer: {
|
133 | |
134 |
|
135 |
|
136 |
|
137 |
|
138 |
|
139 |
|
140 |
|
141 |
|
142 | }
|
143 | })
|