@zohodesk/react-cli 1.1.8-exp.2 → 1.1.9

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