@zohodesk/react-cli 0.0.1-exp.166.2 → 0.0.1-exp.168.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +179 -179
  3. package/README.md +925 -877
  4. package/bin/cli.js +492 -487
  5. package/cert/Tsicsezwild-22-23.crt +37 -0
  6. package/cert/Tsicsezwild-22-23.key +27 -0
  7. package/docs/CustomChunks.md +26 -26
  8. package/docs/DevStart.md +18 -0
  9. package/docs/InstallNode.md +28 -0
  10. package/docs/TODOS.md +10 -10
  11. package/docs/ValueReplacer.md +60 -60
  12. package/docs/warnings_while_install.txt +35 -35
  13. package/files/eslintrc.js +62 -62
  14. package/files/prettierrc.js +3 -3
  15. package/lib/configs/webpack.css.umd.config.js +4 -4
  16. package/lib/configs/webpack.dev.config.js +13 -17
  17. package/lib/configs/webpack.docs.config.js +11 -16
  18. package/lib/configs/webpack.impact.config.js +6 -14
  19. package/lib/configs/webpack.prod.config.js +8 -5
  20. package/lib/loaderUtils/configsAssetsLoaders.js +88 -0
  21. package/lib/loaderUtils/getCSSLoaders.js +5 -3
  22. package/lib/loaders/workerLoader.js +9 -9
  23. package/lib/pluginUtils/getDevPlugins.js +5 -5
  24. package/lib/pluginUtils/getProdPlugins.js +5 -5
  25. package/lib/plugins/EFCPlugin.md +6 -6
  26. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  27. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  28. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  29. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  30. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +86 -86
  31. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  32. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  33. package/lib/plugins/ResourceHintsPlugin.js +17 -17
  34. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
  35. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  36. package/lib/plugins/ServiceWorkerPlugin.js +9 -9
  37. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  38. package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
  39. package/lib/postcss-plugins/hoverActivePlugin.js +357 -0
  40. package/lib/postcss-plugins/keyframesPlugin.js +126 -0
  41. package/lib/schemas/index.js +23 -2
  42. package/lib/servers/{devBulid.js → devBuild.js} +7 -3
  43. package/lib/servers/httpsOptions.js +2 -3
  44. package/lib/servers/nowatchserver.js +2 -2
  45. package/lib/servers/server.js +11 -3
  46. package/lib/sh/pre-commit.sh +34 -34
  47. package/lib/sh/reportPublish.sh +45 -45
  48. package/lib/utils/buildstats.html +148 -148
  49. package/lib/utils/repoClone.js +5 -2
  50. package/lib/utils/resultSchema.json +73 -73
  51. package/npm8.md +9 -9
  52. package/package.json +148 -144
  53. package/postpublish.js +6 -0
  54. package/templates/app/.eslintrc.js +140 -140
  55. package/templates/app/README.md +12 -12
  56. package/templates/app/app/index.html +24 -24
  57. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  58. package/templates/app/app/properties/i18nkeys.json +3 -3
  59. package/templates/app/docs/all.html +69 -69
  60. package/templates/app/mockapi/index.js +18 -18
  61. package/templates/app/package.json +37 -37
  62. package/templates/app/src/actions/SampleActions/index.js +37 -37
  63. package/templates/app/src/actions/index.js +65 -65
  64. package/templates/app/src/appUrls.js +19 -19
  65. package/templates/app/src/components/Alert/Alert.js +134 -134
  66. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  67. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  68. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  69. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  70. package/templates/app/src/components/Sample/SampleList.js +61 -61
  71. package/templates/app/src/components/Slider/Slider.css +41 -41
  72. package/templates/app/src/components/Slider/Slider.js +55 -55
  73. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  74. package/templates/app/src/containers/AppContainer/index.js +96 -96
  75. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  76. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  77. package/templates/app/src/containers/DevTools/index.js +10 -10
  78. package/templates/app/src/containers/Header/index.js +67 -67
  79. package/templates/app/src/containers/Header/index.module.css +43 -43
  80. package/templates/app/src/containers/Redirect/index.js +63 -63
  81. package/templates/app/src/containers/Redirector/index.js +47 -47
  82. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  83. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  84. package/templates/app/src/historyChange.js +5 -5
  85. package/templates/app/src/index.html +10 -10
  86. package/templates/app/src/index.js +24 -24
  87. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  88. package/templates/app/src/reducers/alertData.js +11 -11
  89. package/templates/app/src/reducers/index.js +6 -6
  90. package/templates/app/src/reducers/samples.js +19 -19
  91. package/templates/app/src/store/configureStore.dev.js +51 -51
  92. package/templates/app/src/store/configureStore.js +5 -5
  93. package/templates/app/src/store/configureStore.prod.js +26 -26
  94. package/templates/app/src/util/Common.js +5 -5
  95. package/templates/app/src/util/RequestAPI.js +132 -132
  96. package/templates/docs/all.html +249 -249
  97. package/templates/docs/component.html +178 -178
  98. package/templates/docs/components.html +221 -221
  99. package/templates/docs/css/b.min.css +6 -6
  100. package/templates/docs/css/component.css +42 -42
  101. package/templates/docs/css/componentTest.css +6 -6
  102. package/templates/docs/css/hopscotch.css +585 -585
  103. package/templates/docs/css/style.css +1022 -1022
  104. package/templates/docs/impactReportTemplate.html +154 -154
  105. package/templates/docs/index.html +1493 -1493
  106. package/templates/docs/js/active-line.js +72 -72
  107. package/templates/docs/js/b.min.js +7 -7
  108. package/templates/docs/js/codemirror.js +9680 -9680
  109. package/templates/docs/js/designTokens.js +334 -334
  110. package/templates/docs/js/j.min.js +4 -4
  111. package/templates/docs/js/javascript.js +874 -874
  112. package/templates/docs/js/matchbrackets.js +145 -145
  113. package/DOTO.md +0 -13
  114. package/cert/cert.pem +0 -37
  115. package/cert/key.pem +0 -27
  116. package/cert/passphrase.pem +0 -1
  117. package/eslint/NOTES.md +0 -3
  118. package/eslint/a23.c +0 -16
  119. package/eslint/a28.c +0 -25
  120. package/eslint/a29.c +0 -25
  121. package/eslint/a30.c +0 -29
  122. package/eslint/a31.c +0 -23
  123. package/eslint/a35.c +0 -23
  124. package/eslint/a36.c +0 -18
  125. package/eslint/a37.c +0 -25
  126. package/eslint/a38.c +0 -28
  127. package/eslint/a39.c +0 -17
  128. package/eslint/a40.c +0 -32
  129. package/eslint/mockapi.html +0 -18
  130. package/eslint/mockapi.md +0 -5
package/bin/cli.js CHANGED
@@ -1,488 +1,493 @@
1
1
  #!/usr/bin/env node
2
-
3
- const path = require('path');
4
- const os = require('os');
5
- const { existsSync } = require('fs');
6
- const { spawnSync, spawn } = require('child_process');
7
- const { getOptions } = require('../lib/utils/index.js');
8
-
9
- const { log } = require('../lib/utils');
10
- //initPreCommitHook();
11
-
12
- const options = getOptions();
13
-
14
- const { esLint: esLintOptions } = options || {};
15
- const { preprocess } = options;
16
- const {
17
- ignoreFilePaths: esLintIgnorePaths,
18
- fix: esLintFix,
19
- isCI: isCI,
20
- reportPath: reportPath
21
- } = esLintOptions || {};
22
-
23
- const isWindows = os.platform().toLowerCase() === 'win32';
24
-
25
- const [, , option] = process.argv;
26
- const args = process.argv.slice(3);
27
- const appPath = process.cwd();
28
-
29
- const isNodeModuleUnderAppFolder = __dirname.indexOf(appPath) !== -1;
30
-
31
- const _getCliPath = !isNodeModuleUnderAppFolder
32
- ? libName => path.join(__dirname, '..', 'node_modules', '.bin', libName)
33
- : libName => libName;
34
- const suffixExt = isWindows ? '.cmd' : '';
35
-
36
- function getCliPath(libName) {
37
- return _getCliPath(libName) + suffixExt;
38
- }
39
-
40
- const webpack = getCliPath('webpack');
41
-
42
- const nodemon = getCliPath('nodemon');
43
- const babel = getCliPath('babel');
44
- const propertyToJson = getCliPath('propertyToJson');
45
- const esLint = getCliPath('eslint');
46
-
47
- const preprocesserPath = preprocess.runner
48
- ? path.join(process.cwd(), preprocess.runner)
49
- : '';
50
- const preprocessCli = preprocess.stopNodemon ? 'node' : nodemon;
51
- if (preprocesserPath && existsSync(preprocesserPath)) {
52
- // eslint-disable-next-line default-case
53
- switch (option) {
54
- case 'start':
55
- case 'docs':
56
- spawn(preprocessCli, [preprocesserPath], {
57
- stdio: 'inherit',
58
- cwd: preprocesserPath.slice(0, preprocesserPath.lastIndexOf('/') + 1)
59
- });
60
- // NOTE: it's ok if we not close this here
61
- // Because when node server stops this program willbe closed So this nodemon will be killed as well
62
- break;
63
- case 'nowatchstart':
64
- case 'devbuild':
65
- case 'build:library:es':
66
- case 'build:component:es':
67
- case 'build:library:cmjs':
68
- case 'build:component:cmjs':
69
- spawnSync('node', [preprocesserPath], {
70
- stdio: 'inherit',
71
- cwd: preprocesserPath.slice(0, preprocesserPath.lastIndexOf('/') + 1)
72
- });
73
- break;
74
- }
75
- }
76
-
77
- let result;
78
- switch (option) {
79
- case 'preprocessor':
80
- if (preprocesserPath && existsSync(preprocesserPath)) {
81
- result = spawnSync(preprocessCli, [preprocesserPath], {
82
- stdio: 'inherit',
83
- cwd: preprocesserPath.slice(0, preprocesserPath.lastIndexOf('/') + 1)
84
- });
85
- process.exit(result.status);
86
- } else {
87
- console.error(`preProcessor not exists ${preprocesserPath}`);
88
- }
89
- break;
90
- case 'lint-setup': {
91
- result = spawnSync(
92
- 'node',
93
- [require.resolve('../lib/utils/lint/index.js')].concat(args),
94
- { stdio: 'inherit' }
95
- );
96
- process.exit(result.status);
97
- break;
98
- }
99
- case 'add-lint-scripts': {
100
- result = spawnSync(
101
- 'node',
102
- [require.resolve('../lib/utils/lint/lintScripts.js')].concat(args),
103
- { stdio: 'inherit' }
104
- );
105
- process.exit(result.status);
106
- break;
107
- }
108
- case 'postpublish':
109
- result = spawnSync(
110
- 'node',
111
- [require.resolve('../lib/utils/dependencyPostPublish')].concat(args),
112
- { stdio: 'inherit' }
113
- );
114
-
115
- process.exit(result.status);
116
- break;
117
- case 'rtl':
118
- result = spawnSync(
119
- 'node',
120
- [require.resolve('../lib/utils/rtl')].concat(args),
121
- { stdio: 'inherit' }
122
- );
123
-
124
- process.exit(result.status);
125
- break;
126
- case 'valuereplacer':
127
- result = spawnSync(
128
- 'node',
129
- [require.resolve('../lib/common/valueReplacer')].concat(args),
130
- { stdio: 'inherit' }
131
- );
132
-
133
- process.exit(result.status);
134
- break;
135
- case 'app':
136
- result = spawnSync(
137
- 'cp',
138
- ['-r', path.join(__dirname, '..', 'templates', 'app')].concat(args),
139
- { stdio: 'inherit' }
140
- );
141
- process.exit(result.status);
142
- break;
143
-
144
- case 'library':
145
- result = spawnSync(
146
- 'cp',
147
- ['-r', path.join(__dirname, '..', 'templates', 'library')].concat(args),
148
- { stdio: 'inherit' }
149
- );
150
- process.exit(result.status);
151
- break;
152
-
153
- case 'move':
154
- result = spawnSync(
155
- 'node',
156
- [require.resolve('../lib/utils/copy')].concat(args.concat(false)),
157
- { stdio: 'inherit' }
158
- );
159
- process.exit(result.status);
160
- break;
161
-
162
- case 'copy':
163
- result = spawnSync(
164
- 'node',
165
- [require.resolve('../lib/utils/copy')].concat(args),
166
- { stdio: 'inherit' }
167
- );
168
- process.exit(result.status);
169
- break;
170
-
171
- case 'copyTimezones':
172
- result = spawnSync(
173
- 'node',
174
- [require.resolve('../lib/utils/copyTimezones')].concat(args),
175
- { stdio: 'inherit' }
176
- );
177
- process.exit(result.status);
178
- break;
179
-
180
- case 'clone':
181
- result = spawnSync(
182
- 'node',
183
- [require.resolve('../lib/utils/repoClone')].concat(args.concat(args)),
184
- { stdio: 'inherit' }
185
- );
186
- process.exit(result.status);
187
- break;
188
-
189
- case 'sslcertupdate':
190
- result = spawnSync(
191
- 'node',
192
- [require.resolve('../lib/common/sslcertUpdater')].concat(args),
193
- { stdio: 'inherit' }
194
- );
195
- process.exit(result.status);
196
- break;
197
-
198
- case 'propertyToJson':
199
- result = spawnSync(
200
- propertyToJson,
201
- args.map(arg => path.join(appPath, arg)),
202
- {
203
- stdio: 'inherit'
204
- }
205
- );
206
- process.exit(result.status);
207
- break;
208
-
209
- case 'clean':
210
- result = spawnSync(
211
- 'node',
212
- [require.resolve('../lib/utils/clean')].concat(
213
- args.map(arg => path.join(appPath, arg))
214
- ),
215
- { stdio: 'inherit' }
216
- );
217
- process.exit(result.status);
218
- break;
219
-
220
- case 'devbuild':
221
- result = spawnSync(
222
- 'node',
223
- [
224
- require.resolve('../lib/servers/devBuild')
225
- ].concat(args),
226
- // [require.resolve('../lib/servers/staticServer'), '--expose-http2'].concat(args),
227
- { stdio: 'inherit' }
228
- );
229
- process.exit(result.status);
230
- break;
231
- case 'nowatchstart':
232
- result = spawnSync(
233
- 'node',
234
- [
235
- require.resolve('../lib/servers/nowatchserver'),
236
- '--expose-http2'
237
- ].concat(args),
238
- // [require.resolve('../lib/servers/staticServer'), '--expose-http2'].concat(args),
239
- { stdio: 'inherit' }
240
- );
241
- process.exit(result.status);
242
- break;
243
- case 'start':
244
- result = spawnSync(
245
- 'node',
246
- [
247
- options.app.disableWatch
248
- ? require.resolve('../lib/servers/nowatchserver')
249
- : require.resolve('../lib/servers/server'),
250
-
251
- '--expose-http2'
252
- ].concat(args),
253
- { stdio: 'inherit' }
254
- );
255
- process.exit(result.status);
256
- break;
257
- case 'mockserver':
258
- result = spawnSync(
259
- nodemon,
260
- [
261
- require.resolve('../lib/servers/mockserver.js'),
262
- '--delay',
263
- '2500ms',
264
- 'watch',
265
- `${appPath + path.sep}mockapi`
266
- ].concat(args),
267
- { stdio: 'inherit' }
268
- );
269
- process.exit(result.status);
270
- break;
271
-
272
- case 'docs':
273
- result = spawnSync(
274
- 'node',
275
- [require.resolve('../lib/servers/docsServer')].concat(args),
276
- { stdio: 'inherit' }
277
- );
278
- process.exit(result.status);
279
- break;
280
-
281
- case 'build':
282
- result = spawnSync(
283
- webpack,
284
- [
285
- // '--progress',
286
- // '--profile',
287
- '--config',
288
- require.resolve('../lib/configs/webpack.prod.config.js')
289
- ].concat(args),
290
- { stdio: 'inherit' }
291
- );
292
-
293
- // console.log(result);
294
- process.exit(result.status);
295
- break;
296
-
297
- case 'build:library:umd':
298
- case 'build:component:umd':
299
- result = spawnSync(
300
- webpack,
301
- [
302
- '--config',
303
- require.resolve('../lib/configs/webpack.component.umd.config.js')
304
- ],
305
- { stdio: 'inherit' }
306
- );
307
- process.exit(result.status);
308
- break;
309
- case 'build:css:umd':
310
- result = spawnSync(
311
- webpack,
312
- ['--config', require.resolve('../lib/configs/webpack.css.umd.config.js')],
313
- { stdio: 'inherit' }
314
- );
315
- process.exit(result.status);
316
- break;
317
- case 'build:component:server':
318
- result = spawnSync(
319
- webpack,
320
- ['--config', require.resolve('../lib/configs/webpack.server.config.js')],
321
- { stdio: 'inherit' }
322
- );
323
- process.exit(result.status);
324
- break;
325
-
326
- case 'build:library:cmjs':
327
- case 'build:component:cmjs':
328
- result = spawnSync(
329
- babel,
330
- [
331
- 'src',
332
- '-d',
333
- 'lib',
334
- `--presets=${require.resolve('../lib/babel/cmjs-plugins-presets.js')}`,
335
- '--copy-files'
336
- ].concat(args),
337
- { stdio: 'inherit' }
338
- );
339
- process.exit(result.status);
340
- break;
341
-
342
- case 'build:library:es':
343
- case 'build:component:es':
344
- result = spawnSync(
345
- babel,
346
- [
347
- 'src',
348
- '--out-dir',
349
- 'es',
350
- `--presets=${require.resolve('../lib/babel/es-plugins-presets.js')}`,
351
- '--copy-files'
352
- ].concat(args),
353
- { stdio: 'inherit' }
354
- );
355
- process.exit(result.status);
356
- break;
357
-
358
- case 'test':
359
- result = spawnSync(
360
- 'node',
361
- [require.resolve('../lib/jest/run.js')].concat(args),
362
- { stdio: 'inherit' }
363
- );
364
- process.exit(result.status);
365
- break;
366
-
367
- case 'sstest':
368
- result = spawnSync(
369
- 'node',
370
- [require.resolve('../lib/servers/scrServer')].concat(args),
371
- { stdio: 'inherit' }
372
- );
373
- process.exit(result.status);
374
- break;
375
-
376
- case 'impact:library':
377
- result = spawnSync(
378
- webpack,
379
- [
380
- '--config',
381
- require.resolve('../lib/configs/webpack.impact.config.js')
382
- ].concat(args),
383
- { stdio: 'inherit' }
384
- );
385
-
386
- // result = spawnSync(
387
- // webpack,
388
- // [require.resolve('../lib/server/libraryImpact')].concat(args),
389
- // { stdio: 'inherit' }
390
- // )
391
-
392
- process.exit(result.status);
393
- break;
394
-
395
- case 'publish:report':
396
- result = spawnSync(
397
- 'sh',
398
- [path.join(__dirname, '..', 'lib', 'sh', 'reportPublish.sh')].concat(
399
- args
400
- ),
401
- { stdio: 'inherit' }
402
- );
403
- process.exit(result.status);
404
- break;
405
-
406
- case 'impact':
407
- result = spawnSync(
408
- 'node',
409
- [require.resolve('../lib/server/impactServer')].concat(args),
410
- { stdio: 'inherit' }
411
- );
412
- process.exit(result.status);
413
- break;
414
-
415
- case 'cluster:monitor':
416
- result = spawnSync(
417
- 'node',
418
- [require.resolve('../lib/servers/clusterHubServer')].concat(args),
419
- { stdio: 'inherit' }
420
- );
421
- process.exit(result.status);
422
- break;
423
-
424
- case 'lint':
425
- result = spawnSync(
426
- esLint,
427
- [
428
- '-c',
429
- path.join(__dirname, '..', '.eslintrc.js'),
430
- isCI ? '--no-eslintrc' : false,
431
- '--ignore-path',
432
- esLintIgnorePaths
433
- ? path.join(appPath, esLintIgnorePaths)
434
- : path.join(__dirname, '..', '.eslintignore'),
435
- esLintFix ? '--fix' : false,
436
- isCI ? '-f' : false,
437
- isCI ? path.join(__dirname, './../lib/utils/lintReporter.js') : false
438
- ]
439
- .filter(Boolean)
440
- .concat(args.map(arg => path.join(appPath, arg))),
441
- {
442
- stdio: 'inherit'
443
- }
444
- );
445
- isCI ? log(`You can see the eslint result from ${reportPath}`) : false;
446
- break;
447
-
448
- case 'set:config':
449
- result = spawnSync(
450
- 'node',
451
- [require.resolve('../lib/utils/setEnvVariables')].concat(args),
452
- { stdio: 'inherit' }
453
- );
454
- process.exit(result.status);
455
- break;
456
-
457
- case 'help':
458
- result = spawnSync(
459
- 'node',
460
- [require.resolve('../lib/servers/helpServer')].concat(args),
461
- { stdio: 'inherit' }
462
- );
463
- process.exit(result.status);
464
- break;
465
-
466
- case '--version':
467
- case '-version':
468
- case '--v':
469
- case '-v':
470
- log(`@zohodesk/react-cli v${require('../package.json').version}`);
471
- break;
472
-
473
- default:
474
- log(`react-cli > Unknown option "${option}"`);
475
- log('react-cli app <appName>');
476
- log('react-cli library <libraryName>');
477
- log('react-cli start');
478
- log('react-cli build');
479
- log('react-cli sstest');
480
- log('react-cli test');
481
- log('react-cli publish:report');
482
- log('react-cli build:library:es');
483
- log('react-cli gitclone <last argument clone folder>');
484
- log('react-cli hgclone <last argument clone folder>');
485
-
486
- process.exit(0);
487
- break;
488
- }
2
+
3
+ const path = require('path');
4
+ const os = require('os');
5
+ const { existsSync } = require('fs');
6
+ const { spawnSync, spawn } = require('child_process');
7
+ const { getOptions } = require('../lib/utils/index.js');
8
+
9
+ const { log } = require('../lib/utils');
10
+ //initPreCommitHook();
11
+
12
+ const options = getOptions();
13
+
14
+ const { esLint: esLintOptions } = options || {};
15
+ const { preprocess } = options;
16
+ let { cliRootPath } = options;
17
+ const {
18
+ ignoreFilePaths: esLintIgnorePaths,
19
+ fix: esLintFix,
20
+ isCI: isCI,
21
+ reportPath: reportPath
22
+ } = esLintOptions || {};
23
+
24
+ const isWindows = os.platform().toLowerCase() === 'win32';
25
+
26
+ const [, , option] = process.argv;
27
+ const args = process.argv.slice(3);
28
+ const appPath = process.cwd();
29
+
30
+ const isNodeModuleUnderAppFolder = __dirname.indexOf(appPath) !== -1;
31
+
32
+ if (!cliRootPath) {
33
+ cliRootPath = path.join(__dirname, '..');
34
+ }
35
+
36
+ const _getCliPath = !isNodeModuleUnderAppFolder
37
+ ? libName => path.join(cliRootPath, 'node_modules', '.bin', libName)
38
+ : libName => libName;
39
+ const suffixExt = isWindows ? '.cmd' : '';
40
+
41
+ function getCliPath(libName) {
42
+ return _getCliPath(libName) + suffixExt;
43
+ }
44
+
45
+ const webpack = getCliPath('webpack');
46
+
47
+ const nodemon = getCliPath('nodemon');
48
+ const babel = getCliPath('babel');
49
+ const propertyToJson = getCliPath('propertyToJson');
50
+ const esLint = getCliPath('eslint');
51
+
52
+ const preprocesserPath = preprocess.runner
53
+ ? path.join(process.cwd(), preprocess.runner)
54
+ : '';
55
+ const preprocessCli = preprocess.stopNodemon ? 'node' : nodemon;
56
+ if (preprocesserPath && existsSync(preprocesserPath)) {
57
+ // eslint-disable-next-line default-case
58
+ switch (option) {
59
+ case 'start':
60
+ case 'docs':
61
+ spawn(preprocessCli, [preprocesserPath], {
62
+ stdio: 'inherit',
63
+ cwd: preprocesserPath.slice(0, preprocesserPath.lastIndexOf('/') + 1)
64
+ });
65
+ // NOTE: it's ok if we not close this here
66
+ // Because when node server stops this program willbe closed So this nodemon will be killed as well
67
+ break;
68
+ case 'nowatchstart':
69
+ case 'devbuild':
70
+ case 'build:library:es':
71
+ case 'build:component:es':
72
+ case 'build:library:cmjs':
73
+ case 'build:component:cmjs':
74
+ spawnSync('node', [preprocesserPath], {
75
+ stdio: 'inherit',
76
+ cwd: preprocesserPath.slice(0, preprocesserPath.lastIndexOf('/') + 1)
77
+ });
78
+ break;
79
+ }
80
+ }
81
+
82
+ let result;
83
+ switch (option) {
84
+ case 'preprocessor':
85
+ if (preprocesserPath && existsSync(preprocesserPath)) {
86
+ result = spawnSync(preprocessCli, [preprocesserPath], {
87
+ stdio: 'inherit',
88
+ cwd: preprocesserPath.slice(0, preprocesserPath.lastIndexOf('/') + 1)
89
+ });
90
+ process.exit(result.status);
91
+ } else {
92
+ console.error(`preProcessor not exists ${preprocesserPath}`);
93
+ }
94
+ break;
95
+ case 'lint-setup': {
96
+ result = spawnSync(
97
+ 'node',
98
+ [require.resolve('../lib/utils/lint/index.js')].concat(args),
99
+ { stdio: 'inherit' }
100
+ );
101
+ process.exit(result.status);
102
+ break;
103
+ }
104
+ case 'add-lint-scripts': {
105
+ result = spawnSync(
106
+ 'node',
107
+ [require.resolve('../lib/utils/lint/lintScripts.js')].concat(args),
108
+ { stdio: 'inherit' }
109
+ );
110
+ process.exit(result.status);
111
+ break;
112
+ }
113
+ case 'postpublish':
114
+ result = spawnSync(
115
+ 'node',
116
+ [require.resolve('../lib/utils/dependencyPostPublish')].concat(args),
117
+ { stdio: 'inherit' }
118
+ );
119
+
120
+ process.exit(result.status);
121
+ break;
122
+ case 'rtl':
123
+ result = spawnSync(
124
+ 'node',
125
+ [require.resolve('../lib/utils/rtl')].concat(args),
126
+ { stdio: 'inherit' }
127
+ );
128
+
129
+ process.exit(result.status);
130
+ break;
131
+ case 'valuereplacer':
132
+ result = spawnSync(
133
+ 'node',
134
+ [require.resolve('../lib/common/valueReplacer')].concat(args),
135
+ { stdio: 'inherit' }
136
+ );
137
+
138
+ process.exit(result.status);
139
+ break;
140
+ case 'app':
141
+ result = spawnSync(
142
+ 'cp',
143
+ ['-r', path.join(__dirname, '..', 'templates', 'app')].concat(args),
144
+ { stdio: 'inherit' }
145
+ );
146
+ process.exit(result.status);
147
+ break;
148
+
149
+ case 'library':
150
+ result = spawnSync(
151
+ 'cp',
152
+ ['-r', path.join(__dirname, '..', 'templates', 'library')].concat(args),
153
+ { stdio: 'inherit' }
154
+ );
155
+ process.exit(result.status);
156
+ break;
157
+
158
+ case 'move':
159
+ result = spawnSync(
160
+ 'node',
161
+ [require.resolve('../lib/utils/copy')].concat(args.concat(false)),
162
+ { stdio: 'inherit' }
163
+ );
164
+ process.exit(result.status);
165
+ break;
166
+
167
+ case 'copy':
168
+ result = spawnSync(
169
+ 'node',
170
+ [require.resolve('../lib/utils/copy')].concat(args),
171
+ { stdio: 'inherit' }
172
+ );
173
+ process.exit(result.status);
174
+ break;
175
+
176
+ case 'copyTimezones':
177
+ result = spawnSync(
178
+ 'node',
179
+ [require.resolve('../lib/utils/copyTimezones')].concat(args),
180
+ { stdio: 'inherit' }
181
+ );
182
+ process.exit(result.status);
183
+ break;
184
+
185
+ case 'clone':
186
+ result = spawnSync(
187
+ 'node',
188
+ [require.resolve('../lib/utils/repoClone')].concat(args.concat(args)),
189
+ { stdio: 'inherit' }
190
+ );
191
+ process.exit(result.status);
192
+ break;
193
+
194
+ case 'sslcertupdate':
195
+ result = spawnSync(
196
+ 'node',
197
+ [require.resolve('../lib/common/sslcertUpdater')].concat(args),
198
+ { stdio: 'inherit' }
199
+ );
200
+ process.exit(result.status);
201
+ break;
202
+
203
+ case 'propertyToJson':
204
+ result = spawnSync(
205
+ propertyToJson,
206
+ args.map(arg => path.join(appPath, arg)),
207
+ {
208
+ stdio: 'inherit'
209
+ }
210
+ );
211
+ process.exit(result.status);
212
+ break;
213
+
214
+ case 'clean':
215
+ result = spawnSync(
216
+ 'node',
217
+ [require.resolve('../lib/utils/clean')].concat(
218
+ args.map(arg => path.join(appPath, arg))
219
+ ),
220
+ { stdio: 'inherit' }
221
+ );
222
+ process.exit(result.status);
223
+ break;
224
+
225
+ case 'devbuild':
226
+ result = spawnSync(
227
+ 'node',
228
+ [
229
+ require.resolve('../lib/servers/devBuild')
230
+ ].concat(args),
231
+ // [require.resolve('../lib/servers/staticServer'), '--expose-http2'].concat(args),
232
+ { stdio: 'inherit' }
233
+ );
234
+ process.exit(result.status);
235
+ break;
236
+ case 'nowatchstart':
237
+ result = spawnSync(
238
+ 'node',
239
+ [
240
+ require.resolve('../lib/servers/nowatchserver'),
241
+ '--expose-http2'
242
+ ].concat(args),
243
+ // [require.resolve('../lib/servers/staticServer'), '--expose-http2'].concat(args),
244
+ { stdio: 'inherit' }
245
+ );
246
+ process.exit(result.status);
247
+ break;
248
+ case 'start':
249
+ result = spawnSync(
250
+ 'node',
251
+ [
252
+ options.app.disableWatch
253
+ ? require.resolve('../lib/servers/nowatchserver')
254
+ : require.resolve('../lib/servers/server'),
255
+
256
+ '--expose-http2'
257
+ ].concat(args),
258
+ { stdio: 'inherit' }
259
+ );
260
+ process.exit(result.status);
261
+ break;
262
+ case 'mockserver':
263
+ result = spawnSync(
264
+ nodemon,
265
+ [
266
+ require.resolve('../lib/servers/mockserver.js'),
267
+ '--delay',
268
+ '2500ms',
269
+ 'watch',
270
+ `${appPath + path.sep}mockapi`
271
+ ].concat(args),
272
+ { stdio: 'inherit' }
273
+ );
274
+ process.exit(result.status);
275
+ break;
276
+
277
+ case 'docs':
278
+ result = spawnSync(
279
+ 'node',
280
+ [require.resolve('../lib/servers/docsServer')].concat(args),
281
+ { stdio: 'inherit' }
282
+ );
283
+ process.exit(result.status);
284
+ break;
285
+
286
+ case 'build':
287
+ result = spawnSync(
288
+ webpack,
289
+ [
290
+ // '--progress',
291
+ // '--profile',
292
+ '--config',
293
+ require.resolve('../lib/configs/webpack.prod.config.js')
294
+ ].concat(args),
295
+ { stdio: 'inherit' }
296
+ );
297
+
298
+ // console.log(result);
299
+ process.exit(result.status);
300
+ break;
301
+
302
+ case 'build:library:umd':
303
+ case 'build:component:umd':
304
+ result = spawnSync(
305
+ webpack,
306
+ [
307
+ '--config',
308
+ require.resolve('../lib/configs/webpack.component.umd.config.js')
309
+ ],
310
+ { stdio: 'inherit' }
311
+ );
312
+ process.exit(result.status);
313
+ break;
314
+ case 'build:css:umd':
315
+ result = spawnSync(
316
+ webpack,
317
+ ['--config', require.resolve('../lib/configs/webpack.css.umd.config.js')],
318
+ { stdio: 'inherit' }
319
+ );
320
+ process.exit(result.status);
321
+ break;
322
+ case 'build:component:server':
323
+ result = spawnSync(
324
+ webpack,
325
+ ['--config', require.resolve('../lib/configs/webpack.server.config.js')],
326
+ { stdio: 'inherit' }
327
+ );
328
+ process.exit(result.status);
329
+ break;
330
+
331
+ case 'build:library:cmjs':
332
+ case 'build:component:cmjs':
333
+ result = spawnSync(
334
+ babel,
335
+ [
336
+ 'src',
337
+ '-d',
338
+ 'lib',
339
+ `--presets=${require.resolve('../lib/babel/cmjs-plugins-presets.js')}`,
340
+ '--copy-files'
341
+ ].concat(args),
342
+ { stdio: 'inherit' }
343
+ );
344
+ process.exit(result.status);
345
+ break;
346
+
347
+ case 'build:library:es':
348
+ case 'build:component:es':
349
+ result = spawnSync(
350
+ babel,
351
+ [
352
+ 'src',
353
+ '--out-dir',
354
+ 'es',
355
+ `--presets=${require.resolve('../lib/babel/es-plugins-presets.js')}`,
356
+ '--copy-files'
357
+ ].concat(args),
358
+ { stdio: 'inherit' }
359
+ );
360
+ process.exit(result.status);
361
+ break;
362
+
363
+ case 'test':
364
+ result = spawnSync(
365
+ 'node',
366
+ [require.resolve('../lib/jest/run.js')].concat(args),
367
+ { stdio: 'inherit' }
368
+ );
369
+ process.exit(result.status);
370
+ break;
371
+
372
+ case 'sstest':
373
+ result = spawnSync(
374
+ 'node',
375
+ [require.resolve('../lib/servers/scrServer')].concat(args),
376
+ { stdio: 'inherit' }
377
+ );
378
+ process.exit(result.status);
379
+ break;
380
+
381
+ case 'impact:library':
382
+ result = spawnSync(
383
+ webpack,
384
+ [
385
+ '--config',
386
+ require.resolve('../lib/configs/webpack.impact.config.js')
387
+ ].concat(args),
388
+ { stdio: 'inherit' }
389
+ );
390
+
391
+ // result = spawnSync(
392
+ // webpack,
393
+ // [require.resolve('../lib/server/libraryImpact')].concat(args),
394
+ // { stdio: 'inherit' }
395
+ // )
396
+
397
+ process.exit(result.status);
398
+ break;
399
+
400
+ case 'publish:report':
401
+ result = spawnSync(
402
+ 'sh',
403
+ [path.join(__dirname, '..', 'lib', 'sh', 'reportPublish.sh')].concat(
404
+ args
405
+ ),
406
+ { stdio: 'inherit' }
407
+ );
408
+ process.exit(result.status);
409
+ break;
410
+
411
+ case 'impact':
412
+ result = spawnSync(
413
+ 'node',
414
+ [require.resolve('../lib/server/impactServer')].concat(args),
415
+ { stdio: 'inherit' }
416
+ );
417
+ process.exit(result.status);
418
+ break;
419
+
420
+ case 'cluster:monitor':
421
+ result = spawnSync(
422
+ 'node',
423
+ [require.resolve('../lib/servers/clusterHubServer')].concat(args),
424
+ { stdio: 'inherit' }
425
+ );
426
+ process.exit(result.status);
427
+ break;
428
+
429
+ case 'lint':
430
+ result = spawnSync(
431
+ esLint,
432
+ [
433
+ '-c',
434
+ path.join(__dirname, '..', '.eslintrc.js'),
435
+ isCI ? '--no-eslintrc' : false,
436
+ '--ignore-path',
437
+ esLintIgnorePaths
438
+ ? path.join(appPath, esLintIgnorePaths)
439
+ : path.join(__dirname, '..', '.eslintignore'),
440
+ esLintFix ? '--fix' : false,
441
+ isCI ? '-f' : false,
442
+ isCI ? path.join(__dirname, './../lib/utils/lintReporter.js') : false
443
+ ]
444
+ .filter(Boolean)
445
+ .concat(args.map(arg => path.join(appPath, arg))),
446
+ {
447
+ stdio: 'inherit'
448
+ }
449
+ );
450
+ isCI ? log(`You can see the eslint result from ${reportPath}`) : false;
451
+ break;
452
+
453
+ case 'set:config':
454
+ result = spawnSync(
455
+ 'node',
456
+ [require.resolve('../lib/utils/setEnvVariables')].concat(args),
457
+ { stdio: 'inherit' }
458
+ );
459
+ process.exit(result.status);
460
+ break;
461
+
462
+ case 'help':
463
+ result = spawnSync(
464
+ 'node',
465
+ [require.resolve('../lib/servers/helpServer')].concat(args),
466
+ { stdio: 'inherit' }
467
+ );
468
+ process.exit(result.status);
469
+ break;
470
+
471
+ case '--version':
472
+ case '-version':
473
+ case '--v':
474
+ case '-v':
475
+ log(`@zohodesk/react-cli v${require('../package.json').version}`);
476
+ break;
477
+
478
+ default:
479
+ log(`react-cli > Unknown option "${option}"`);
480
+ log('react-cli app <appName>');
481
+ log('react-cli library <libraryName>');
482
+ log('react-cli start');
483
+ log('react-cli build');
484
+ log('react-cli sstest');
485
+ log('react-cli test');
486
+ log('react-cli publish:report');
487
+ log('react-cli build:library:es');
488
+ log('react-cli gitclone <last argument clone folder>');
489
+ log('react-cli hgclone <last argument clone folder>');
490
+
491
+ process.exit(0);
492
+ break;
493
+ }