@zohodesk/react-cli 0.0.1-test.148.3 → 1.0.0-exp.1

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