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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) 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 -1251
  6. package/bin/cli.js +497 -497
  7. package/docs/ComposeMinification.md +13 -13
  8. package/docs/CustomChunks.md +29 -26
  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/common/splitChunks.js +65 -45
  24. package/lib/common/testPattern.js +9 -9
  25. package/lib/configs/webpack.css.umd.config.js +4 -4
  26. package/lib/configs/webpack.dev.config.js +24 -3
  27. package/lib/configs/webpack.docs.config.js +22 -3
  28. package/lib/configs/webpack.impact.config.js +4 -2
  29. package/lib/configs/webpack.prod.config.js +6 -3
  30. package/lib/deprecationLogger.js +41 -0
  31. package/lib/loaderUtils/configsAssetsLoaders.js +33 -33
  32. package/lib/loaderUtils/getCSSLoaders.js +77 -56
  33. package/lib/loaders/workerLoader.js +9 -9
  34. package/lib/pluginUtils/getDevPlugins.js +8 -7
  35. package/lib/pluginUtils/getProdPlugins.js +6 -6
  36. package/lib/plugins/CustomAttributePlugin.md +35 -35
  37. package/lib/plugins/EFCPlugin.md +6 -6
  38. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  39. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  40. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  41. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  42. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  43. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  44. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  45. package/lib/plugins/ResourceHintsPlugin.js +30 -20
  46. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
  47. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  48. package/lib/plugins/SelectorPlugin.js +29 -29
  49. package/lib/plugins/ServiceWorkerPlugin.js +9 -9
  50. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  51. package/lib/plugins/VariableConversionCollector.js +59 -59
  52. package/lib/plugins/utils/fileHandling.js +35 -42
  53. package/lib/plugins/variableConvertorUtils.js +9 -9
  54. package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
  55. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  56. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  57. package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
  58. package/lib/schemas/index.js +19 -36
  59. package/lib/sh/pre-commit.sh +34 -34
  60. package/lib/sh/reportPublish.sh +45 -45
  61. package/lib/utils/buildstats.html +148 -148
  62. package/lib/utils/cssClassNameGenerate.js +13 -13
  63. package/lib/utils/deprecationSupport.js +123 -0
  64. package/lib/utils/getOptions.js +18 -78
  65. package/lib/utils/resultSchema.json +73 -73
  66. package/npm-shrinkwrap.json +14454 -33393
  67. package/npm8.md +9 -9
  68. package/package.json +123 -123
  69. package/postpublish.js +8 -8
  70. package/result.json +1 -0
  71. package/templates/app/.eslintrc.js +140 -140
  72. package/templates/app/README.md +12 -12
  73. package/templates/app/app/index.html +24 -24
  74. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  75. package/templates/app/app/properties/i18nkeys.json +3 -3
  76. package/templates/app/docs/all.html +69 -69
  77. package/templates/app/mockapi/index.js +18 -18
  78. package/templates/app/package.json +37 -37
  79. package/templates/app/src/actions/SampleActions/index.js +37 -37
  80. package/templates/app/src/actions/index.js +65 -65
  81. package/templates/app/src/appUrls.js +19 -19
  82. package/templates/app/src/components/Alert/Alert.js +134 -134
  83. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  84. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  85. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  86. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  87. package/templates/app/src/components/Sample/SampleList.js +61 -61
  88. package/templates/app/src/components/Slider/Slider.css +41 -41
  89. package/templates/app/src/components/Slider/Slider.js +55 -55
  90. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  91. package/templates/app/src/containers/AppContainer/index.js +96 -96
  92. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  93. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  94. package/templates/app/src/containers/DevTools/index.js +10 -10
  95. package/templates/app/src/containers/Header/index.js +67 -67
  96. package/templates/app/src/containers/Header/index.module.css +43 -43
  97. package/templates/app/src/containers/Redirect/index.js +63 -63
  98. package/templates/app/src/containers/Redirector/index.js +47 -47
  99. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  100. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  101. package/templates/app/src/historyChange.js +5 -5
  102. package/templates/app/src/index.html +10 -10
  103. package/templates/app/src/index.js +24 -24
  104. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  105. package/templates/app/src/reducers/alertData.js +11 -11
  106. package/templates/app/src/reducers/index.js +6 -6
  107. package/templates/app/src/reducers/samples.js +19 -19
  108. package/templates/app/src/store/configureStore.dev.js +51 -51
  109. package/templates/app/src/store/configureStore.js +5 -5
  110. package/templates/app/src/store/configureStore.prod.js +26 -26
  111. package/templates/app/src/util/Common.js +5 -5
  112. package/templates/app/src/util/RequestAPI.js +132 -132
  113. package/templates/docs/all.html +250 -250
  114. package/templates/docs/component.html +179 -179
  115. package/templates/docs/components.html +222 -222
  116. package/templates/docs/css/b.min.css +6 -6
  117. package/templates/docs/css/component.css +42 -42
  118. package/templates/docs/css/componentTest.css +6 -6
  119. package/templates/docs/css/hopscotch.css +585 -585
  120. package/templates/docs/css/markdown.css +202 -202
  121. package/templates/docs/css/style.css +1022 -1022
  122. package/templates/docs/impactReportTemplate.html +154 -154
  123. package/templates/docs/index.html +1502 -1502
  124. package/templates/docs/js/active-line.js +72 -72
  125. package/templates/docs/js/b.min.js +7 -7
  126. package/templates/docs/js/codemirror.js +9680 -9680
  127. package/templates/docs/js/designTokens.js +334 -334
  128. package/templates/docs/js/j.min.js +4 -4
  129. package/templates/docs/js/javascript.js +874 -874
  130. package/templates/docs/js/matchbrackets.js +145 -145
  131. package/unittest/index.html +37 -0
package/bin/cli.js CHANGED
@@ -1,497 +1,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/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/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
+ }