UNPKG

5.65 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const Joi = require("joi");
4const 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 // DEPRECATED: https://nervjs.github.io/taro/docs/config-detail.html#deprecated-h5webpack
116 webpack: Joi.forbidden(),
117 // https://webpack.js.org/configuration/entry-context/#entry
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();
137exports.default = schema;
138//# sourceMappingURL=configSchema.js.map
\No newline at end of file