@spcsn/taro-cli 0.1.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +37 -0
  2. package/define-config.d.ts +1 -0
  3. package/define-config.js +1 -0
  4. package/dist/cli.js +140 -110
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/{customCommand.d.ts → custom-command.d.ts} +1 -1
  7. package/dist/commands/custom-command.js +23 -0
  8. package/dist/commands/custom-command.js.map +1 -0
  9. package/dist/create/creator.js +2 -0
  10. package/dist/create/creator.js.map +1 -1
  11. package/dist/create/{fetchTemplate.js → fetch-template.js} +26 -33
  12. package/dist/create/fetch-template.js.map +1 -0
  13. package/dist/create/project.d.ts +2 -6
  14. package/dist/create/project.js +240 -285
  15. package/dist/create/project.js.map +1 -1
  16. package/dist/create/template-creator.d.ts +75 -0
  17. package/dist/create/template-creator.js +275 -0
  18. package/dist/create/template-creator.js.map +1 -0
  19. package/dist/doctor/validators.d.ts +7 -6
  20. package/dist/doctor/validators.js +6 -7
  21. package/dist/doctor/validators.js.map +1 -1
  22. package/dist/platform-weapp/apis-list.d.ts +1 -0
  23. package/dist/platform-weapp/apis-list.js +37 -0
  24. package/dist/platform-weapp/apis-list.js.map +1 -0
  25. package/dist/platform-weapp/apis.d.ts +16 -0
  26. package/dist/platform-weapp/apis.js +34 -0
  27. package/dist/platform-weapp/apis.js.map +1 -0
  28. package/dist/platform-weapp/components-react.d.ts +80 -0
  29. package/dist/platform-weapp/components-react.js +86 -0
  30. package/dist/platform-weapp/components-react.js.map +1 -0
  31. package/dist/platform-weapp/components.d.ts +4 -0
  32. package/dist/platform-weapp/components.js +520 -0
  33. package/dist/platform-weapp/components.js.map +1 -0
  34. package/dist/platform-weapp/index.d.ts +11 -0
  35. package/dist/platform-weapp/index.js +17 -0
  36. package/dist/platform-weapp/index.js.map +1 -0
  37. package/dist/platform-weapp/program.d.ts +35 -0
  38. package/dist/platform-weapp/program.js +64 -0
  39. package/dist/platform-weapp/program.js.map +1 -0
  40. package/dist/platform-weapp/runtime-utils.d.ts +27 -0
  41. package/dist/platform-weapp/runtime-utils.js +48 -0
  42. package/dist/platform-weapp/runtime-utils.js.map +1 -0
  43. package/dist/platform-weapp/runtime.d.ts +1 -0
  44. package/dist/platform-weapp/runtime.js +7 -0
  45. package/dist/platform-weapp/runtime.js.map +1 -0
  46. package/dist/platform-weapp/template.d.ts +39 -0
  47. package/dist/platform-weapp/template.js +119 -0
  48. package/dist/platform-weapp/template.js.map +1 -0
  49. package/dist/presets/commands/build.js +25 -45
  50. package/dist/presets/commands/build.js.map +1 -1
  51. package/dist/presets/commands/init.js +2 -4
  52. package/dist/presets/commands/init.js.map +1 -1
  53. package/dist/presets/constant/hooks.d.ts +0 -2
  54. package/dist/presets/constant/hooks.js +1 -3
  55. package/dist/presets/constant/hooks.js.map +1 -1
  56. package/dist/presets/files/generate-framework-info.js +68 -0
  57. package/dist/presets/files/generate-framework-info.js.map +1 -0
  58. package/dist/presets/files/{generateProjectConfig.js → generate-project-config.js} +1 -1
  59. package/dist/presets/files/generate-project-config.js.map +1 -0
  60. package/dist/presets/files/{writeFileToDist.js → write-file-to-dist.js} +1 -1
  61. package/dist/presets/files/write-file-to-dist.js.map +1 -0
  62. package/dist/presets/hooks/build.js +1 -3
  63. package/dist/presets/hooks/build.js.map +1 -1
  64. package/dist/presets/index.js +3 -5
  65. package/dist/presets/index.js.map +1 -1
  66. package/dist/util/{appConfig.d.ts → app-config.d.ts} +2 -2
  67. package/dist/util/{appConfig.js → app-config.js} +4 -3
  68. package/dist/util/app-config.js.map +1 -0
  69. package/dist/util/defineConfig.d.ts +5 -5
  70. package/dist/util/defineConfig.js.map +1 -1
  71. package/dist/util/index.d.ts +9 -1
  72. package/dist/util/index.js +54 -23
  73. package/dist/util/index.js.map +1 -1
  74. package/package.json +36 -39
  75. package/postinstall.js +1 -17
  76. package/src/cli.ts +185 -132
  77. package/src/commands/custom-command.ts +22 -0
  78. package/src/create/{fetchTemplate.ts → fetch-template.ts} +30 -35
  79. package/src/create/project.ts +31 -78
  80. package/src/create/template-creator.ts +325 -0
  81. package/src/doctor/validators.js +1 -0
  82. package/src/doctor/validators.ts +8 -6
  83. package/src/platform-weapp/apis-list.ts +33 -0
  84. package/src/platform-weapp/apis.ts +48 -0
  85. package/src/platform-weapp/components-react.ts +81 -0
  86. package/src/platform-weapp/components.ts +521 -0
  87. package/src/platform-weapp/index.ts +25 -0
  88. package/src/platform-weapp/program.ts +70 -0
  89. package/src/platform-weapp/runtime-utils.ts +57 -0
  90. package/src/platform-weapp/runtime.ts +6 -0
  91. package/src/platform-weapp/template.ts +150 -0
  92. package/src/presets/commands/build.ts +20 -40
  93. package/src/presets/commands/init.ts +1 -4
  94. package/src/presets/constant/hooks.js +12 -0
  95. package/src/presets/constant/hooks.ts +0 -2
  96. package/src/presets/files/{generateFrameworkInfo.ts → generate-framework-info.ts} +7 -1
  97. package/src/presets/hooks/build.ts +1 -3
  98. package/src/presets/index.ts +3 -5
  99. package/src/util/app-config.js +1 -0
  100. package/src/util/{appConfig.ts → app-config.ts} +5 -4
  101. package/src/util/defineConfig.ts +6 -6
  102. package/src/util/index.ts +67 -25
  103. package/templates/default/config/dev.js +1 -1
  104. package/templates/default/config/index.js +28 -40
  105. package/templates/default/config/prod.js +1 -1
  106. package/templates/default/package.json.tmpl +2 -17
  107. package/templates/default/types/global.d.ts +0 -4
  108. package/templates/plugin-compile/README.md +3 -1
  109. package/templates/plugin-compile/package.json.tmpl +1 -2
  110. package/templates/plugin-compile/src/index.ts +18 -28
  111. package/LICENSE +0 -174
  112. package/dist/commands/customCommand.js +0 -23
  113. package/dist/commands/customCommand.js.map +0 -1
  114. package/dist/config/packagesManagement.d.ts +0 -19
  115. package/dist/config/packagesManagement.js +0 -22
  116. package/dist/config/packagesManagement.js.map +0 -1
  117. package/dist/create/fetchTemplate.js.map +0 -1
  118. package/dist/create/page.d.ts +0 -65
  119. package/dist/create/page.js +0 -266
  120. package/dist/create/page.js.map +0 -1
  121. package/dist/create/plugin.d.ts +0 -16
  122. package/dist/create/plugin.js +0 -77
  123. package/dist/create/plugin.js.map +0 -1
  124. package/dist/presets/commands/config.js +0 -121
  125. package/dist/presets/commands/config.js.map +0 -1
  126. package/dist/presets/commands/create.js +0 -112
  127. package/dist/presets/commands/create.js.map +0 -1
  128. package/dist/presets/commands/doctor.js +0 -15
  129. package/dist/presets/commands/doctor.js.map +0 -1
  130. package/dist/presets/commands/global-config.d.ts +0 -3
  131. package/dist/presets/commands/global-config.js +0 -175
  132. package/dist/presets/commands/global-config.js.map +0 -1
  133. package/dist/presets/commands/help.d.ts +0 -3
  134. package/dist/presets/commands/help.js +0 -16
  135. package/dist/presets/commands/help.js.map +0 -1
  136. package/dist/presets/commands/info.d.ts +0 -3
  137. package/dist/presets/commands/info.js +0 -96
  138. package/dist/presets/commands/info.js.map +0 -1
  139. package/dist/presets/commands/inspect.d.ts +0 -3
  140. package/dist/presets/commands/inspect.js +0 -155
  141. package/dist/presets/commands/inspect.js.map +0 -1
  142. package/dist/presets/commands/update.d.ts +0 -3
  143. package/dist/presets/commands/update.js +0 -187
  144. package/dist/presets/commands/update.js.map +0 -1
  145. package/dist/presets/files/generateFrameworkInfo.d.ts +0 -3
  146. package/dist/presets/files/generateFrameworkInfo.js +0 -30
  147. package/dist/presets/files/generateFrameworkInfo.js.map +0 -1
  148. package/dist/presets/files/generateProjectConfig.d.ts +0 -3
  149. package/dist/presets/files/generateProjectConfig.js.map +0 -1
  150. package/dist/presets/files/writeFileToDist.d.ts +0 -3
  151. package/dist/presets/files/writeFileToDist.js.map +0 -1
  152. package/dist/presets/hooks/create.d.ts +0 -3
  153. package/dist/presets/hooks/create.js +0 -42
  154. package/dist/presets/hooks/create.js.map +0 -1
  155. package/dist/presets/platforms/plugin.d.ts +0 -3
  156. package/dist/presets/platforms/plugin.js +0 -106
  157. package/dist/presets/platforms/plugin.js.map +0 -1
  158. package/dist/presets/platforms/rn.d.ts +0 -3
  159. package/dist/presets/platforms/rn.js +0 -130
  160. package/dist/presets/platforms/rn.js.map +0 -1
  161. package/dist/util/appConfig.js.map +0 -1
  162. package/dist/util/createPage.d.ts +0 -9
  163. package/dist/util/createPage.js +0 -114
  164. package/dist/util/createPage.js.map +0 -1
  165. package/src/__tests__/__mocks__/presets.ts +0 -15
  166. package/src/__tests__/build-config.spec.ts +0 -66
  167. package/src/__tests__/cli.spec.ts +0 -226
  168. package/src/__tests__/config.spec.ts +0 -224
  169. package/src/__tests__/doctor-config.spec.ts +0 -918
  170. package/src/__tests__/doctor-recommand.spec.ts +0 -136
  171. package/src/__tests__/doctor.spec.ts +0 -94
  172. package/src/__tests__/dotenv-parse.spec.ts +0 -105
  173. package/src/__tests__/env/.env +0 -2
  174. package/src/__tests__/fixtures/default/.env +0 -3
  175. package/src/__tests__/fixtures/default/.env.development +0 -1
  176. package/src/__tests__/fixtures/default/.env.local +0 -1
  177. package/src/__tests__/fixtures/default/.env.pre +0 -3
  178. package/src/__tests__/fixtures/default/.env.production +0 -1
  179. package/src/__tests__/fixtures/default/.env.uat +0 -5
  180. package/src/__tests__/fixtures/default/.env.uat.local +0 -1
  181. package/src/__tests__/fixtures/default/babel.config.js +0 -10
  182. package/src/__tests__/fixtures/default/config/dev.js +0 -9
  183. package/src/__tests__/fixtures/default/config/index.js +0 -84
  184. package/src/__tests__/fixtures/default/config/prod.js +0 -18
  185. package/src/__tests__/fixtures/default/package.json +0 -27
  186. package/src/__tests__/fixtures/default/src/app.config.js +0 -11
  187. package/src/__tests__/fixtures/default/src/app.js +0 -16
  188. package/src/__tests__/fixtures/default/src/app.scss +0 -0
  189. package/src/__tests__/fixtures/default/src/index.html +0 -19
  190. package/src/__tests__/fixtures/default/src/pages/index/index.config.js +0 -3
  191. package/src/__tests__/fixtures/default/src/pages/index/index.jsx +0 -22
  192. package/src/__tests__/fixtures/default/src/pages/index/index.scss +0 -0
  193. package/src/__tests__/info.spec.ts +0 -72
  194. package/src/__tests__/inspect.spec.ts +0 -160
  195. package/src/__tests__/update.spec.ts +0 -310
  196. package/src/__tests__/utils/index.ts +0 -54
  197. package/src/commands/customCommand.ts +0 -22
  198. package/src/config/packagesManagement.ts +0 -20
  199. package/src/config/rn-stylelint.json +0 -4
  200. package/src/create/page.ts +0 -325
  201. package/src/create/plugin.ts +0 -55
  202. package/src/presets/commands/config.ts +0 -86
  203. package/src/presets/commands/create.ts +0 -104
  204. package/src/presets/commands/doctor.ts +0 -21
  205. package/src/presets/commands/global-config.ts +0 -140
  206. package/src/presets/commands/help.ts +0 -17
  207. package/src/presets/commands/info.ts +0 -81
  208. package/src/presets/commands/inspect.ts +0 -137
  209. package/src/presets/commands/update.ts +0 -175
  210. package/src/presets/hooks/create.ts +0 -9
  211. package/src/presets/platforms/plugin.ts +0 -75
  212. package/src/presets/platforms/rn.ts +0 -125
  213. package/src/util/createPage.ts +0 -139
  214. package/templates/default/babel.config.js +0 -14
  215. /package/dist/create/{fetchTemplate.d.ts → fetch-template.d.ts} +0 -0
  216. /package/dist/presets/{commands/config.d.ts → files/generate-framework-info.d.ts} +0 -0
  217. /package/dist/presets/{commands/create.d.ts → files/generate-project-config.d.ts} +0 -0
  218. /package/dist/presets/{commands/doctor.d.ts → files/write-file-to-dist.d.ts} +0 -0
  219. /package/src/presets/files/{generateProjectConfig.ts → generate-project-config.ts} +0 -0
  220. /package/src/presets/files/{writeFileToDist.ts → write-file-to-dist.ts} +0 -0
@@ -1,918 +0,0 @@
1
- import * as helper from '@spcsn/taro-helper';
2
-
3
- import doctor from '../doctor';
4
-
5
- const validator = doctor.validators[1];
6
- const baseConfig = {
7
- projectName: 'test',
8
- sourceRoot: 'src',
9
- outputRoot: 'dist',
10
- framework: 'react',
11
- };
12
-
13
- function getConfig(config) {
14
- return {
15
- projectConfig: {
16
- ...baseConfig,
17
- ...config,
18
- },
19
- helper,
20
- configPath: '',
21
- };
22
- }
23
-
24
- describe('config validator of doctor', () => {
25
- it("should config include's all the required values", async () => {
26
- let { messages } = await validator({
27
- projectConfig: {},
28
- helper,
29
- configPath: '',
30
- });
31
- expect(messages.length).toEqual(6);
32
- let msgs = messages.map((line) => line.content);
33
- expect(msgs.includes('缺少 "projectName" 配置项')).toBeTruthy();
34
- expect(msgs.includes('缺少 "sourceRoot" 配置项')).toBeTruthy();
35
- expect(msgs.includes('缺少 "outputRoot" 配置项')).toBeTruthy();
36
- expect(msgs.includes('缺少 "framework" 配置项')).toBeTruthy();
37
-
38
- const res = await validator({
39
- projectConfig: {
40
- projectName: '',
41
- sourceRoot: '',
42
- outputRoot: '',
43
- framework: '',
44
- },
45
- helper,
46
- configPath: '',
47
- });
48
- messages = res.messages;
49
-
50
- expect(messages.length).toEqual(3);
51
- msgs = messages.map((line) => line.content);
52
- expect(msgs.includes('framework 的值 "" 与任何指定选项 ["react"] 都不匹配')).toBeTruthy();
53
- });
54
-
55
- it('date', async () => {
56
- let { messages } = await validator(
57
- getConfig({
58
- date: '2020-5-26',
59
- }),
60
- );
61
-
62
- expect(messages.length).toEqual(3);
63
-
64
- const res = await validator(
65
- getConfig({
66
- date: 'abc',
67
- }),
68
- );
69
- messages = res.messages;
70
-
71
- expect(messages.length).toEqual(3);
72
- expect(messages[2].content).toEqual(
73
- 'date 的值 "abc" 与 "\\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01])" 不匹配',
74
- );
75
- });
76
-
77
- it('framework', async () => {
78
- let res = await validator(
79
- getConfig({
80
- framework: 'react',
81
- }),
82
- );
83
- expect(res.messages.length).toEqual(3);
84
-
85
- res = await validator(
86
- getConfig({
87
- framework: 'other',
88
- }),
89
- );
90
- expect(res.messages.length).toEqual(3);
91
- expect(res.messages[2].content).toEqual('framework 的值 "other" 与任何指定选项 ["react"] 都不匹配');
92
- });
93
-
94
- it('designWidth', async () => {
95
- let res = await validator(
96
- getConfig({
97
- designWidth: '750',
98
- }),
99
- );
100
- expect(res.messages.length).toEqual(3);
101
-
102
- res = await validator(
103
- getConfig({
104
- designWidth: 'a',
105
- }),
106
- );
107
- expect(res.messages.length).toEqual(3);
108
-
109
- res = await validator(
110
- getConfig({
111
- designWidth: 700.5,
112
- }),
113
- );
114
- expect(res.messages.length).toEqual(3);
115
-
116
- res = await validator(
117
- getConfig({
118
- designWidth: -640,
119
- }),
120
- );
121
- expect(res.messages.length).toEqual(3);
122
- });
123
-
124
- it('deviceRatio', async () => {
125
- let res = await validator(
126
- getConfig({
127
- deviceRatio: {
128
- 640: 2.34 / 2,
129
- 750: 1,
130
- 828: 1.81 / 2,
131
- },
132
- }),
133
- );
134
- expect(res.messages.length).toEqual(3);
135
-
136
- res = await validator(
137
- getConfig({
138
- deviceRatio: {
139
- 640: 2.34 / 2,
140
- 750: 'a',
141
- 828: 1.81 / 2,
142
- },
143
- }),
144
- );
145
- expect(res.messages.length).toEqual(3);
146
- });
147
-
148
- it('plugins', async () => {
149
- let res = await validator(
150
- getConfig({
151
- plugins: [
152
- '@spcsn/taro-plugin-mock',
153
- [
154
- '@spcsn/taro-plugin-mock',
155
- {
156
- mocks: {
157
- '/api/user/1': {
158
- name: 'judy',
159
- desc: 'Mental guy',
160
- },
161
- },
162
- },
163
- ],
164
- ['@spcsn/taro-plugin-mock'],
165
- '/absulute/path/plugin/filename',
166
- ],
167
- }),
168
- );
169
- expect(res.messages.length).toEqual(3);
170
-
171
- res = await validator(
172
- getConfig({
173
- plugins: [1, {}, ['x', 1], [{}, 'x'], ['x', {}, 1], ['']],
174
- }),
175
- );
176
- expect(res.messages.length).toEqual(6);
177
- });
178
-
179
- it('presets', async () => {
180
- let res = await validator(
181
- getConfig({
182
- presets: [
183
- '@spcsn/taro-plugin-mock',
184
- [
185
- '@spcsn/taro-plugin-mock',
186
- {
187
- mocks: {
188
- '/api/user/1': {
189
- name: 'judy',
190
- desc: 'Mental guy',
191
- },
192
- },
193
- },
194
- ],
195
- ['@spcsn/taro-plugin-mock'],
196
- '/absulute/path/plugin/filename',
197
- ],
198
- }),
199
- );
200
- expect(res.messages.length).toEqual(3);
201
-
202
- res = await validator(
203
- getConfig({
204
- presets: [1, {}, ['x', 1], [{}, 'x'], ['x', {}, 1], ['']],
205
- }),
206
- );
207
- expect(res.messages.length).toEqual(6);
208
- });
209
-
210
- it('terser', async () => {
211
- let res = await validator(
212
- getConfig({
213
- terser: {
214
- enable: true,
215
- config: {},
216
- },
217
- }),
218
- );
219
- expect(res.messages.length).toEqual(3);
220
-
221
- res = await validator(
222
- getConfig({
223
- terser: {
224
- enables: true,
225
- enable: 1,
226
- config: [],
227
- },
228
- }),
229
- );
230
- expect(res.messages.length).toEqual(5);
231
- });
232
-
233
- it('csso', async () => {
234
- let res = await validator(
235
- getConfig({
236
- csso: {
237
- enable: true,
238
- config: {},
239
- },
240
- }),
241
- );
242
- expect(res.messages.length).toEqual(3);
243
-
244
- res = await validator(
245
- getConfig({
246
- csso: {
247
- enables: true,
248
- enable: 1,
249
- config: [],
250
- },
251
- }),
252
- );
253
- expect(res.messages.length).toEqual(5);
254
- });
255
-
256
- it('uglify', async () => {
257
- let res = await validator(
258
- getConfig({
259
- uglify: {
260
- enable: true,
261
- config: {},
262
- },
263
- }),
264
- );
265
- expect(res.messages.length).toEqual(3);
266
-
267
- res = await validator(
268
- getConfig({
269
- uglify: {
270
- enables: true,
271
- enable: 1,
272
- config: [],
273
- },
274
- }),
275
- );
276
- expect(res.messages.length).toEqual(3);
277
- });
278
-
279
- it('sass', async () => {
280
- let res = await validator(
281
- getConfig({
282
- sass: {
283
- resource: '/src/styles/variable.scss',
284
- },
285
- }),
286
- );
287
- expect(res.messages.length).toEqual(3);
288
-
289
- res = await validator(
290
- getConfig({
291
- sass: {
292
- resource: ['./src/styles/variable.scss', './src/styles/mixins.scss'],
293
- projectDirectory: '/root',
294
- data: '$nav-height: 48px;',
295
- },
296
- }),
297
- );
298
- expect(res.messages.length).toEqual(3);
299
-
300
- res = await validator(
301
- getConfig({
302
- sass: {
303
- resource: {},
304
- projectDirectory: 1,
305
- data: 1,
306
- },
307
- }),
308
- );
309
- expect(res.messages.length).toEqual(5);
310
- });
311
-
312
- it('env', async () => {
313
- const res = await validator(
314
- getConfig({
315
- env: {
316
- NODE_ENV: '"development"',
317
- },
318
- }),
319
- );
320
- expect(res.messages.length).toEqual(3);
321
- });
322
-
323
- it('defineConstants', async () => {
324
- const res = await validator(
325
- getConfig({
326
- defineConstants: {
327
- A: '"a"',
328
- },
329
- }),
330
- );
331
- expect(res.messages.length).toEqual(3);
332
- });
333
-
334
- it('alias', async () => {
335
- let res = await validator(
336
- getConfig({
337
- alias: {
338
- '@/components': 'src/components',
339
- },
340
- }),
341
- );
342
- expect(res.messages.length).toEqual(3);
343
-
344
- res = await validator(
345
- getConfig({
346
- alias: {
347
- '@/components': ['src/components'],
348
- '@/utils': 1,
349
- '@/project': {},
350
- },
351
- }),
352
- );
353
- expect(res.messages.length).toEqual(3);
354
- });
355
-
356
- it('copy', async () => {
357
- let res = await validator(
358
- getConfig({
359
- copy: {
360
- patterns: [
361
- { from: 'src/asset/tt/', to: 'dist/asset/tt/', ignore: ['*.js'] },
362
- { from: 'src/asset/tt/sd.jpg', to: 'dist/asset/tt/sd.jpg' },
363
- ],
364
- },
365
- }),
366
- );
367
- expect(res.messages.length).toEqual(3);
368
-
369
- res = await validator(
370
- getConfig({
371
- copy: {
372
- options: {
373
- ignore: ['*.js', '*.css'],
374
- },
375
- },
376
- }),
377
- );
378
- expect(res.messages.length).toEqual(3);
379
-
380
- res = await validator(
381
- getConfig({
382
- copy: {
383
- patterns: [{ ignore: ['*.js'] }, { from: 'src/asset/tt/sd.jpg' }, { to: 'dist/asset/tt/sd.jpg' }],
384
- options: {
385
- ignore: [1, true, {}],
386
- },
387
- },
388
- }),
389
- );
390
- expect(res.messages.length).toEqual(9);
391
- });
392
-
393
- it('mini.compile', async () => {
394
- let res = await validator(
395
- getConfig({
396
- mini: {
397
- compile: {
398
- exclude: ['src/pages/index/vod-wx-sdk-v2.js', (modulePath) => modulePath.indexOf('vod-wx-sdk-v2') >= 0],
399
- include: ['src/pages/index/vod-wx-sdk-v2.js', (modulePath) => modulePath.indexOf('vod-wx-sdk-v2') >= 0],
400
- },
401
- },
402
- }),
403
- );
404
- expect(res.messages.length).toEqual(3);
405
-
406
- res = await validator(
407
- getConfig({
408
- mini: {
409
- compile: {
410
- exclude: [null, []],
411
- include: [1, {}],
412
- },
413
- },
414
- }),
415
- );
416
- expect(res.messages.length).toEqual(6);
417
- });
418
-
419
- it('mini.webpackChain', async () => {
420
- let res = await validator(
421
- getConfig({
422
- mini: {
423
- webpackChain(chain, webpack) {
424
- console.log(chain, webpack);
425
- },
426
- },
427
- }),
428
- );
429
- expect(res.messages.length).toEqual(3);
430
-
431
- res = await validator(
432
- getConfig({
433
- mini: {
434
- webpackChain: 'some',
435
- },
436
- }),
437
- );
438
- expect(res.messages.length).toEqual(3);
439
- });
440
-
441
- it('mini.commonChunks', async () => {
442
- let res = await validator(
443
- getConfig({
444
- mini: {
445
- commonChunks: ['runtime', 'vendors', 'taro', 'common'],
446
- },
447
- }),
448
- );
449
- expect(res.messages.length).toEqual(3);
450
-
451
- res = await validator(
452
- getConfig({
453
- mini: {
454
- commonChunks(commonChunks) {
455
- commonChunks.push('yourCustomCommonChunkName');
456
- return commonChunks;
457
- },
458
- },
459
- }),
460
- );
461
- expect(res.messages.length).toEqual(3);
462
-
463
- res = await validator(
464
- getConfig({
465
- mini: {
466
- commonChunks: 1,
467
- },
468
- }),
469
- );
470
- expect(res.messages.length).toEqual(3);
471
- });
472
-
473
- it('mini.addChunkPages', async () => {
474
- let res = await validator(
475
- getConfig({
476
- mini: {
477
- addChunkPages(pages, pagesNames) {
478
- console.log(pages, pagesNames);
479
- },
480
- },
481
- }),
482
- );
483
- expect(res.messages.length).toEqual(3);
484
-
485
- res = await validator(
486
- getConfig({
487
- mini: {
488
- addChunkPages: 1,
489
- },
490
- }),
491
- );
492
- expect(res.messages.length).toEqual(3);
493
- });
494
-
495
- it('mini.postcss', async () => {
496
- let res = await validator(
497
- getConfig({
498
- mini: {
499
- postcss: {
500
- autoprefixer: {
501
- enable: true,
502
- config: {},
503
- },
504
- },
505
- },
506
- }),
507
- );
508
- expect(res.messages.length).toEqual(3);
509
-
510
- res = await validator(
511
- getConfig({
512
- mini: {
513
- postcss: {
514
- autoprefixer: {
515
- enable: 1,
516
- config: 'a',
517
- },
518
- pxtransform: true,
519
- },
520
- },
521
- }),
522
- );
523
- expect(res.messages.length).toEqual(5);
524
- });
525
-
526
- it('mini.output', async () => {
527
- let res = await validator(
528
- getConfig({
529
- mini: {
530
- output: {},
531
- },
532
- }),
533
- );
534
- expect(res.messages.length).toEqual(3);
535
-
536
- res = await validator(
537
- getConfig({
538
- mini: {
539
- output: 1,
540
- },
541
- }),
542
- );
543
- expect(res.messages.length).toEqual(3);
544
- });
545
-
546
- it("mini's third party options", async () => {
547
- const res = await validator(
548
- getConfig({
549
- mini: {
550
- cssLoaderOption: {},
551
- styleLoaderOption: {},
552
- sassLoaderOption: {},
553
- lessLoaderOption: {},
554
- stylusLoaderOption: {},
555
- mediaUrlLoaderOption: {},
556
- fontUrlLoaderOption: {},
557
- imageUrlLoaderOption: {},
558
- miniCssExtractPluginOption: {},
559
- },
560
- }),
561
- );
562
- expect(res.messages.length).toEqual(3);
563
- });
564
-
565
- it('h5.devServer', async () => {
566
- let res = await validator(
567
- getConfig({
568
- h5: {
569
- devServer: {
570
- port: 10086,
571
- },
572
- },
573
- }),
574
- );
575
- expect(res.messages.length).toEqual(3);
576
-
577
- res = await validator(
578
- getConfig({
579
- h5: {
580
- devServer: 1,
581
- },
582
- }),
583
- );
584
- expect(res.messages.length).toEqual(3);
585
- });
586
-
587
- it('h5.output', async () => {
588
- let res = await validator(
589
- getConfig({
590
- h5: {
591
- output: {
592
- filename: 'js/[name].[hash:8].js',
593
- chunkFilename: 'js/[name].[chunkhash:8].js',
594
- },
595
- },
596
- }),
597
- );
598
- expect(res.messages.length).toEqual(3);
599
-
600
- res = await validator(
601
- getConfig({
602
- h5: {
603
- output: 1,
604
- },
605
- }),
606
- );
607
- expect(res.messages.length).toEqual(3);
608
- });
609
-
610
- it('h5.publicPath', async () => {
611
- let res = await validator(
612
- getConfig({
613
- h5: {
614
- publicPath: '/',
615
- },
616
- }),
617
- );
618
- expect(res.messages.length).toEqual(3);
619
-
620
- res = await validator(
621
- getConfig({
622
- h5: {
623
- publicPath: 1,
624
- },
625
- }),
626
- );
627
- expect(res.messages.length).toEqual(3);
628
- });
629
-
630
- it('h5.staticDirectory', async () => {
631
- let res = await validator(
632
- getConfig({
633
- h5: {
634
- staticDirectory: '/',
635
- },
636
- }),
637
- );
638
- expect(res.messages.length).toEqual(3);
639
-
640
- res = await validator(
641
- getConfig({
642
- h5: {
643
- staticDirectory: 1,
644
- },
645
- }),
646
- );
647
- expect(res.messages.length).toEqual(3);
648
- });
649
-
650
- it('h5.chunkDirectory', async () => {
651
- let res = await validator(
652
- getConfig({
653
- h5: {
654
- chunkDirectory: '/',
655
- },
656
- }),
657
- );
658
- expect(res.messages.length).toEqual(3);
659
-
660
- res = await validator(
661
- getConfig({
662
- h5: {
663
- chunkDirectory: 1,
664
- },
665
- }),
666
- );
667
- expect(res.messages.length).toEqual(3);
668
- });
669
-
670
- it('h5.webpackChain', async () => {
671
- let res = await validator(
672
- getConfig({
673
- h5: {
674
- webpackChain(chain, webpack) {
675
- console.log(chain, webpack);
676
- },
677
- },
678
- }),
679
- );
680
- expect(res.messages.length).toEqual(3);
681
-
682
- res = await validator(
683
- getConfig({
684
- h5: {
685
- webpackChain: 'some',
686
- },
687
- }),
688
- );
689
- expect(res.messages.length).toEqual(3);
690
- });
691
-
692
- // it('h5.webpack[DEPRECATED]', async () => {
693
- // const res = await validator(getConfig({
694
- // h5: {
695
- // webpack: 1
696
- // }
697
- // }))
698
- // expect(res.messages.length).toEqual(3)
699
- // expect(res.messages[0].content).toEqual('h5.webpack "h5.webpack" is not allowed')
700
- // })
701
-
702
- it('h5.router', async () => {
703
- let res = await validator(
704
- getConfig({
705
- h5: {
706
- router: {
707
- mode: 'hash',
708
- },
709
- },
710
- }),
711
- );
712
- expect(res.messages.length).toEqual(3);
713
-
714
- res = await validator(
715
- getConfig({
716
- h5: {
717
- router: 1,
718
- },
719
- }),
720
- );
721
- expect(res.messages.length).toEqual(3);
722
- });
723
-
724
- it('h5.entry', async () => {
725
- let res = await validator(
726
- getConfig({
727
- h5: {
728
- entry: './path/to/my/entry/file.js',
729
- },
730
- }),
731
- );
732
- expect(res.messages.length).toEqual(3);
733
-
734
- res = await validator(
735
- getConfig({
736
- h5: {
737
- entry: ['./path/to/my/entry/file.js', './path/other/file.js'],
738
- },
739
- }),
740
- );
741
- expect(res.messages.length).toEqual(3);
742
-
743
- res = await validator(
744
- getConfig({
745
- h5: {
746
- entry: {
747
- main: './path/to/my/entry/file.js',
748
- },
749
- },
750
- }),
751
- );
752
- expect(res.messages.length).toEqual(3);
753
-
754
- res = await validator(
755
- getConfig({
756
- h5: {
757
- entry: {
758
- main: ['./path/to/my/entry/file.js', './path/other/file.js'],
759
- },
760
- },
761
- }),
762
- );
763
- expect(res.messages.length).toEqual(3);
764
-
765
- res = await validator(
766
- getConfig({
767
- h5: {
768
- entry: () => './demo',
769
- },
770
- }),
771
- );
772
- expect(res.messages.length).toEqual(3);
773
- });
774
-
775
- it('h5.enableSourceMap', async () => {
776
- let res = await validator(
777
- getConfig({
778
- h5: {
779
- enableSourceMap: true,
780
- },
781
- }),
782
- );
783
- expect(res.messages.length).toEqual(3);
784
-
785
- res = await validator(
786
- getConfig({
787
- h5: {
788
- enableSourceMap: 1,
789
- },
790
- }),
791
- );
792
- expect(res.messages.length).toEqual(3);
793
- });
794
-
795
- it('h5.enableExtract', async () => {
796
- let res = await validator(
797
- getConfig({
798
- h5: {
799
- enableExtract: true,
800
- },
801
- }),
802
- );
803
- expect(res.messages.length).toEqual(3);
804
-
805
- res = await validator(
806
- getConfig({
807
- h5: {
808
- enableExtract: 1,
809
- },
810
- }),
811
- );
812
- expect(res.messages.length).toEqual(3);
813
- });
814
-
815
- it('h5.esnextModules', async () => {
816
- let res = await validator(
817
- getConfig({
818
- h5: {
819
- esnextModules: ['taro-ui'],
820
- },
821
- }),
822
- );
823
- expect(res.messages.length).toEqual(3);
824
-
825
- res = await validator(
826
- getConfig({
827
- h5: {
828
- esnextModules: [1, true, {}],
829
- },
830
- }),
831
- );
832
- expect(res.messages.length).toEqual(4);
833
-
834
- res = await validator(getConfig({ h5: 1 }));
835
- expect(res.messages.length).toEqual(3);
836
- });
837
-
838
- it('h5.postcss', async () => {
839
- let res = await validator(
840
- getConfig({
841
- h5: {
842
- postcss: {
843
- autoprefixer: {
844
- enable: true,
845
- config: {},
846
- },
847
- },
848
- },
849
- }),
850
- );
851
- expect(res.messages.length).toEqual(3);
852
-
853
- res = await validator(
854
- getConfig({
855
- h5: {
856
- postcss: {
857
- autoprefixer: {
858
- enable: 1,
859
- config: 'a',
860
- },
861
- pxtransform: true,
862
- },
863
- },
864
- }),
865
- );
866
- expect(res.messages.length).toEqual(5);
867
- });
868
-
869
- it("h5's third party options", async () => {
870
- const res = await validator(
871
- getConfig({
872
- h5: {
873
- cssLoaderOption: {},
874
- styleLoaderOption: {},
875
- sassLoaderOption: {},
876
- lessLoaderOption: {},
877
- stylusLoaderOption: {},
878
- mediaUrlLoaderOption: {},
879
- fontUrlLoaderOption: {},
880
- imageUrlLoaderOption: {},
881
- miniCssExtractPluginOption: {},
882
- },
883
- }),
884
- );
885
- expect(res.messages.length).toEqual(3);
886
- });
887
-
888
- it('unknow', async () => {
889
- const res = await validator(
890
- getConfig({
891
- unknow: {},
892
- }),
893
- );
894
- expect(res.messages.length).toEqual(3);
895
- });
896
-
897
- it('mini.unknow', async () => {
898
- const res = await validator(
899
- getConfig({
900
- mini: {
901
- unknow: {},
902
- },
903
- }),
904
- );
905
- expect(res.messages.length).toEqual(3);
906
- });
907
-
908
- it('h5.unknow', async () => {
909
- const res = await validator(
910
- getConfig({
911
- h5: {
912
- unknow: {},
913
- },
914
- }),
915
- );
916
- expect(res.messages.length).toEqual(3);
917
- });
918
- });