1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const Joi = require("joi");
|
4 | const schema = Joi.object().keys({
|
5 | projectName: Joi.string().required(),
|
6 | date: Joi.date(),
|
7 | designWidth: Joi.alternatives(Joi.number().integer().positive(), Joi.function()),
|
8 | deviceRatio: Joi.object().pattern(Joi.number(), Joi.number()),
|
9 | sourceRoot: Joi.string().required(),
|
10 | outputRoot: Joi.string().required(),
|
11 | plugins: Joi.array().items(Joi.alternatives(Joi.string(), Joi.array().ordered(Joi.string().required(), Joi.object()))),
|
12 | presets: Joi.array().items(Joi.alternatives(Joi.string(), Joi.array().ordered(Joi.string().required(), Joi.object()))),
|
13 | env: Joi.object().pattern(Joi.string(), Joi.any()),
|
14 | defineConstants: Joi.object().pattern(Joi.string(), Joi.any()),
|
15 | copy: Joi.object().keys({
|
16 | patterns: Joi.array().items(Joi.object().keys({
|
17 | from: Joi.string().required(),
|
18 | to: Joi.string().required(),
|
19 | ignore: Joi.array().items(Joi.string()),
|
20 | transform: Joi.func()
|
21 | })),
|
22 | options: Joi.object().keys({
|
23 | ignore: Joi.array().items(Joi.string())
|
24 | })
|
25 | }),
|
26 | framework: Joi.any().valid('nerv', 'react', 'preact', 'vue', 'vue3').required(),
|
27 | compiler: Joi.alternatives(Joi.string().valid('webpack4', 'webpack5'), Joi.object().keys({
|
28 | type: Joi.string().valid('webpack4', 'webpack5'),
|
29 | prebundle: Joi.object().keys({
|
30 | enable: Joi.boolean(),
|
31 | timings: Joi.boolean(),
|
32 | cacheDir: Joi.string(),
|
33 | force: Joi.boolean(),
|
34 | include: Joi.array(),
|
35 | exclude: Joi.array(),
|
36 | esbuild: Joi.object().unknown(),
|
37 | swc: Joi.object().unknown(),
|
38 | webpack: Joi.object().keys({
|
39 | provide: Joi.array().items(Joi.function())
|
40 | })
|
41 | })
|
42 | })),
|
43 | jsMinimizer: Joi.string().valid('terser', 'esbuild'),
|
44 | cssMinimizer: Joi.string().valid('csso', 'esbuild', 'parcelCss'),
|
45 | cache: Joi.object().keys({
|
46 | enable: Joi.bool()
|
47 | }).unknown(),
|
48 | logger: Joi.object().keys({
|
49 | quiet: Joi.bool(),
|
50 | stats: Joi.bool()
|
51 | }).unknown(),
|
52 | mini: Joi.object().keys({
|
53 | baseLevel: Joi.number().integer().positive(),
|
54 | compile: Joi.object().keys({
|
55 | exclude: Joi.array().items(Joi.string(), Joi.function()),
|
56 | include: Joi.array().items(Joi.string(), Joi.function())
|
57 | }),
|
58 | webpackChain: Joi.func(),
|
59 | commonChunks: Joi.alternatives(Joi.func(), Joi.array().items(Joi.string())),
|
60 | addChunkPages: Joi.func(),
|
61 | output: Joi.object(),
|
62 | enableSourceMap: Joi.bool(),
|
63 | sourceMapType: Joi.string(),
|
64 | debugReact: Joi.bool(),
|
65 | minifyXML: Joi.object().keys({
|
66 | collapseWhitespace: Joi.bool()
|
67 | }),
|
68 | postcss: Joi.object().pattern(Joi.string(), Joi.object().keys({
|
69 | enable: Joi.bool(),
|
70 | config: Joi.object()
|
71 | })),
|
72 | cssLoaderOption: Joi.object(),
|
73 | styleLoaderOption: Joi.object(),
|
74 | sassLoaderOption: Joi.object(),
|
75 | lessLoaderOption: Joi.object(),
|
76 | stylusLoaderOption: Joi.object(),
|
77 | mediaUrlLoaderOption: Joi.object(),
|
78 | fontUrlLoaderOption: Joi.object(),
|
79 | imageUrlLoaderOption: Joi.object(),
|
80 | miniCssExtractPluginOption: Joi.object()
|
81 | }).unknown(),
|
82 | alias: Joi.object().pattern(Joi.string(), Joi.string()),
|
83 | csso: Joi.object().keys({
|
84 | enable: Joi.bool(),
|
85 | config: Joi.object()
|
86 | }),
|
87 | uglify: Joi.object().keys({
|
88 | enable: Joi.bool(),
|
89 | config: Joi.object()
|
90 | }),
|
91 | terser: Joi.object().keys({
|
92 | enable: Joi.bool(),
|
93 | config: Joi.object()
|
94 | }),
|
95 | esbuild: Joi.object().keys({
|
96 | minify: Joi.object().keys({
|
97 | enable: Joi.bool(),
|
98 | config: Joi.object()
|
99 | })
|
100 | }),
|
101 | sass: Joi.object().keys({
|
102 | resource: Joi.alternatives(Joi.array(), Joi.string()),
|
103 | projectDirectory: Joi.string(),
|
104 | data: Joi.string()
|
105 | }).unknown(),
|
106 | h5: Joi.object().keys({
|
107 | devServer: Joi.object(),
|
108 | publicPath: Joi.string(),
|
109 | staticDirectory: Joi.string(),
|
110 | chunkDirectory: Joi.string(),
|
111 | webpackChain: Joi.func(),
|
112 | output: Joi.object(),
|
113 | router: Joi.object(),
|
114 | esnextModules: Joi.array().items(Joi.alternatives(Joi.string(), Joi.object().instance(RegExp))),
|
115 |
|
116 | webpack: Joi.forbidden(),
|
117 |
|
118 | entry: Joi.alternatives(Joi.string(), Joi.array().items(Joi.string()), Joi.object().pattern(Joi.string(), Joi.alternatives(Joi.string(), Joi.array().items(Joi.string()))), Joi.func()),
|
119 | enableSourceMap: Joi.bool(),
|
120 | sourceMapType: Joi.string(),
|
121 | enableExtract: Joi.bool(),
|
122 | cssLoaderOption: Joi.object(),
|
123 | styleLoaderOption: Joi.object(),
|
124 | sassLoaderOption: Joi.object(),
|
125 | lessLoaderOption: Joi.object(),
|
126 | stylusLoaderOption: Joi.object(),
|
127 | mediaUrlLoaderOption: Joi.object(),
|
128 | fontUrlLoaderOption: Joi.object(),
|
129 | imageUrlLoaderOption: Joi.object(),
|
130 | miniCssExtractPluginOption: Joi.object(),
|
131 | postcss: Joi.object().pattern(Joi.string(), Joi.object().keys({
|
132 | enable: Joi.bool(),
|
133 | config: Joi.object()
|
134 | }))
|
135 | }).unknown()
|
136 | }).unknown();
|
137 | exports.default = schema;
|
138 |
|
\ | No newline at end of file |