@zohodesk/react-cli 0.0.1-exp.161.2 → 0.0.1-exp.162.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.eslintrc.js +3 -7
  2. package/README.md +61 -1
  3. package/bin/cli.js +67 -21
  4. package/lib/common/splitChunks.js +63 -10
  5. package/lib/configs/jest.config.js +12 -3
  6. package/lib/configs/libAlias.js +31 -0
  7. package/lib/configs/webpack.dev.config.js +6 -19
  8. package/lib/configs/webpack.prod.config.js +18 -21
  9. package/lib/schemas/index.js +12 -0
  10. package/lib/utils/getCurrentBranch.js +1 -1
  11. package/lib/utils/getOptions.js +55 -1
  12. package/lib/utils/jsonHelper.js +11 -2
  13. package/package.json +6 -7
  14. package/node_modules0/history/CHANGES.md +0 -395
  15. package/node_modules0/history/DOMUtils.js +0 -3
  16. package/node_modules0/history/ExecutionEnvironment.js +0 -3
  17. package/node_modules0/history/LICENSE +0 -21
  18. package/node_modules0/history/LocationUtils.js +0 -3
  19. package/node_modules0/history/PathUtils.js +0 -3
  20. package/node_modules0/history/README.md +0 -282
  21. package/node_modules0/history/cjs/history.js +0 -933
  22. package/node_modules0/history/cjs/history.min.js +0 -1
  23. package/node_modules0/history/createBrowserHistory.js +0 -3
  24. package/node_modules0/history/createHashHistory.js +0 -3
  25. package/node_modules0/history/createMemoryHistory.js +0 -3
  26. package/node_modules0/history/createTransitionManager.js +0 -3
  27. package/node_modules0/history/es/DOMUtils.js +0 -7
  28. package/node_modules0/history/es/ExecutionEnvironment.js +0 -7
  29. package/node_modules0/history/es/LocationUtils.js +0 -7
  30. package/node_modules0/history/es/PathUtils.js +0 -7
  31. package/node_modules0/history/es/createBrowserHistory.js +0 -7
  32. package/node_modules0/history/es/createHashHistory.js +0 -7
  33. package/node_modules0/history/es/createMemoryHistory.js +0 -7
  34. package/node_modules0/history/es/createTransitionManager.js +0 -7
  35. package/node_modules0/history/es/warnAboutDeprecatedESMImport.js +0 -35
  36. package/node_modules0/history/esm/history.js +0 -904
  37. package/node_modules0/history/index.js +0 -7
  38. package/node_modules0/history/package.json +0 -120
  39. package/node_modules0/history/umd/history.js +0 -1059
  40. package/node_modules0/history/umd/history.min.js +0 -1
  41. package/node_modules0/history/warnAboutDeprecatedCJSRequire.js +0 -35
package/.eslintrc.js CHANGED
@@ -108,7 +108,9 @@ let commonConfigs = {
108
108
  'comma-dangle': [logLevel],
109
109
  'comma-spacing': [logLevel],
110
110
  'func-call-spacing': [logLevel],
111
- indent: [logLevel, 2, { SwitchCase: 1 }],
111
+ // reference to this https://stackoverflow.com/questions/56337176/prettier-and-eslint-indents-not-working-together
112
+ // when using prettier, we should disable eslint's indent rule
113
+ indent: ['off', 2, { SwitchCase: 1 }],
112
114
  'jsx-quotes': [logLevel, 'prefer-single'],
113
115
  'key-spacing': [logLevel],
114
116
  'keyword-spacing': [logLevel],
@@ -140,8 +142,6 @@ let commonConfigs = {
140
142
  'prefer-template': [logLevel],
141
143
  'prefer-rest-params': [logLevel],
142
144
  'no-useless-constructor': [logLevel],
143
- 'no-duplicate-imports': [logLevel],
144
- 'array-callback-return': [logLevel],
145
145
  'no-use-before-define': [logLevel],
146
146
 
147
147
  'react/default-props-match-prop-types': [logLevel],
@@ -152,7 +152,6 @@ let commonConfigs = {
152
152
  'react/no-this-in-sfc': [logLevel],
153
153
  'react/no-will-update-set-state': [logLevel],
154
154
  'react/no-unused-state': [logLevel],
155
- 'react/no-will-update-set-state': [logLevel],
156
155
  // 'react/require-default-props': [logLevel],
157
156
  // 'react/require-optimization': [logLevel],
158
157
 
@@ -171,9 +170,6 @@ let commonConfigs = {
171
170
  'react/jsx-no-duplicate-props': [logLevel],
172
171
  'react/no-deprecated': [logLevel],
173
172
  'react/no-children-prop': [logLevel],
174
- 'react/no-unused-state': [logLevel],
175
- 'react/destructuring-assignment': [logLevel],
176
- 'react/default-props-match-prop-types': [logLevel],
177
173
 
178
174
  'css-modules/no-unused-class': [logLevel, { camelCase: true }],
179
175
  'css-modules/no-undef-class': [logLevel, { camelCase: 'only' }]
package/README.md CHANGED
@@ -2,10 +2,70 @@
2
2
 
3
3
  A CLI tool for build modern web application and libraries
4
4
 
5
+ # 0.0.1-beta.164
6
+
7
+ - typo fix
8
+
9
+ # 0.0.1-beta.163
10
+
11
+ - **Issue Fix:-**
12
+
13
+ - if git not installed react-cli throws error for any command due to `getCurrentBranch` in `shemas/index.js` now fixed
14
+ - jest test cases not runnig issue fix (typo moduleNameMapper => libAlias)
15
+
16
+ - **Features :-**
17
+ - feature added for pre process logic
18
+ - tailer made requirement for preprocess, just write node js file
19
+ - mention file in `"react-cli" => "preprocess" => "runner"`
20
+ - option parse logic added for react-cli (exprimental)
21
+ - `--stop_nodemon` usally preprocessor run in `nodemon` so to stop it this option is provided
22
+
23
+ # 0.0.1-exp.162.3
24
+
25
+ - **Optimazation:-**
26
+ - Split chunks Optimization check
27
+
28
+ # 0.0.1-exp.162.2
29
+
30
+ - **Optimazation:-**
31
+ - double time minimize optimazation
32
+
33
+ # 0.0.1-beta.162.1
34
+
35
+ - **Issue Fix:-**
36
+ - if git not installed react-cli throws error for any command due to `getCurrentBranch` in `shemas/index.js` now fixed
37
+
38
+ # 0.0.1-beta.161.1
39
+
40
+ - **Features :-**
41
+ - feature added for pre process logic
42
+ - tailer made requirement for preprocess, just write node js file
43
+ - mention file in `"react-cli" => "preprocess" => "runner"`
44
+ - option parse logic added for react-cli (exprimental)
45
+
46
+ # 0.0.1-beta.162
47
+
48
+ - @zohodesk/datetimejs package updated to beta.8
49
+
50
+ # 0.0.1-beta.161
51
+
52
+ - **Features :-**
53
+ - feature added for efc `templateFilePath` in `package.json` option palce is `"react-cli" => "efc" => "templateFilePath"`
54
+ - `(('publicPath'))` this placeholder will be replace as publicPath string `publicPath`
55
+ - `(('getInitalAssets'))` this placeholder will be replace as function `getInitalAssets`
56
+ - `getInitalAssets` this function has two arguments `assetsType`, `lang`
57
+ - `assetsType` are `js`, `css`, `i18n`
58
+ - `lang` this argument only works when `i18n` is `assetsType`
59
+ - feature added for efc `cdnStatement`
60
+ - **Issue fixes:-**
61
+ - css classname hash change issue fix
62
+ - debug package conflit issue fix in nock in (react-cli test)
63
+ - manifest.json css file name correction issue for rtl and ltr
64
+
5
65
  # 0.0.1-exp.161.2
6
66
 
7
67
  - Features
8
- - feature added for efc `templateFilePath` in `paakage.json` option palce is `"react-cli" => "efc" `
68
+ - feature added for efc `templateFilePath` in `package.json` option palce is `"react-cli" => "efc" `
9
69
  - `(('publicPath'))` this placeholder will be replace as publicPath string `publicPath`
10
70
  - `(('getInitalAssets'))` this placeholder will be replace as function `getInitalAssets`
11
71
  - `getInitalAssets` this function has two arguments `assetsType`, `lang`
package/bin/cli.js CHANGED
@@ -1,28 +1,30 @@
1
1
  #!/usr/bin/env node
2
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');
3
+ const path = require('path');
4
+ const os = require('os');
5
+ const { existsSync } = require('fs');
6
+ const { spawnSync, spawn } = require('child_process');
7
+ const { getOptions } = require('../lib/utils/index.js');
7
8
 
8
- let { log } = require('../lib/utils');
9
+ const { log } = require('../lib/utils');
9
10
  //initPreCommitHook();
10
11
 
11
- let options = getOptions();
12
+ const options = getOptions();
12
13
 
13
- let { esLint: esLintOptions } = options || {};
14
- let {
14
+ const { esLint: esLintOptions } = options || {};
15
+ const { preprocess } = options;
16
+ const {
15
17
  ignoreFilePaths: esLintIgnorePaths,
16
18
  fix: esLintFix,
17
19
  isCI: isCI,
18
20
  reportPath: reportPath
19
21
  } = esLintOptions || {};
20
22
 
21
- let isWindows = os.platform().toLowerCase() === 'win32';
23
+ const isWindows = os.platform().toLowerCase() === 'win32';
22
24
 
23
- let [, , option] = process.argv;
24
- let args = process.argv.slice(3);
25
- let appPath = process.cwd();
25
+ const [, , option] = process.argv;
26
+ const args = process.argv.slice(3);
27
+ const appPath = process.cwd();
26
28
 
27
29
  const isNodeModuleUnderAppFolder = __dirname.indexOf(appPath) !== -1;
28
30
 
@@ -35,15 +37,55 @@ function getCliPath(libName) {
35
37
  return _getCliPath(libName) + suffixExt;
36
38
  }
37
39
 
38
- let webpack = getCliPath('webpack');
39
-
40
- let nodemon = getCliPath('nodemon');
41
- let babel = getCliPath('babel');
42
- let propertyToJson = getCliPath('propertyToJson');
43
- let esLint = getCliPath('eslint');
40
+ const webpack = getCliPath('webpack');
41
+
42
+ const nodemon = getCliPath('nodemon');
43
+ const babel = getCliPath('babel');
44
+ const propertyToJson = getCliPath('propertyToJson');
45
+ const esLint = getCliPath('eslint');
46
+
47
+ const preprocesserPath = preprocess.runner
48
+ ? path.join(process.cwd(), preprocess.runner)
49
+ : '';
50
+ const preprocessCli = preprocess.stopNodemon ? 'node' : nodemon;
51
+ if (preprocesserPath && existsSync(preprocesserPath)) {
52
+ // eslint-disable-next-line default-case
53
+ switch (option) {
54
+ case 'start':
55
+ case 'docs':
56
+ spawn(preprocessCli, [preprocesserPath], {
57
+ stdio: 'inherit',
58
+ cwd: preprocesserPath.slice(0, preprocesserPath.lastIndexOf('/') + 1)
59
+ });
60
+ // NOTE: it's ok if we not close this here
61
+ // Because when node server stops this program willbe closed So this nodemon will be killed as well
62
+ break;
63
+ case 'nowatchstart':
64
+ case '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
+ }
44
75
 
45
76
  let result;
46
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;
47
89
  case 'lint-setup': {
48
90
  result = spawnSync(
49
91
  'node',
@@ -155,10 +197,11 @@ switch (option) {
155
197
  break;
156
198
 
157
199
  case 'clean':
158
- args = args.map(arg => path.join(appPath, arg));
159
200
  result = spawnSync(
160
201
  'node',
161
- [require.resolve('../lib/utils/clean')].concat(args),
202
+ [require.resolve('../lib/utils/clean')].concat(
203
+ args.map(arg => path.join(appPath, arg))
204
+ ),
162
205
  { stdio: 'inherit' }
163
206
  );
164
207
  process.exit(result.status);
@@ -218,12 +261,15 @@ switch (option) {
218
261
  result = spawnSync(
219
262
  webpack,
220
263
  [
264
+ // '--progress',
265
+ // '--profile',
221
266
  '--config',
222
- require.resolve('../lib/configs/webpack.prod.config.js')
267
+ require.resolve('../lib/configs/webpack.prod.config.js'),
223
268
  ].concat(args),
224
269
  { stdio: 'inherit' }
225
270
  );
226
271
 
272
+ // console.log(result);
227
273
  process.exit(result.status);
228
274
  break;
229
275
 
@@ -39,22 +39,75 @@ let isReact = module => {
39
39
  } = module;
40
40
  let reactBundle = ['react', 'react-dom'];
41
41
  return userRequest && reactBundle.some(pkg => userRequest.indexOf(`node_modules${ps}${pkg}${ps}`) >= 0);
42
- };
42
+ }; // let defaultChunks = {
43
+ // 'react.vendor': {
44
+ // name: 'react.vendor',
45
+ // chunks: 'all',
46
+ // minChunks: 1,
47
+ // test: isReact,
48
+ // priority: -10
49
+ // },
50
+ // vendor: {
51
+ // name: 'vendor',
52
+ // chunks: 'all',
53
+ // minChunks: 1,
54
+ // test: isVendor,
55
+ // priority: -10
56
+ // },
57
+ // zohocharts: {
58
+ // chunks: 'all',
59
+ // minChunks: 1,
60
+ // test: /[\\/]node_modules[\\/]((@zohodesk|@zohocharts))[\\/]((zc-custom|d3).*)/,
61
+ // priority: 30,
62
+ // enforce: true
63
+ // }
64
+ // };
65
+
43
66
 
44
67
  let defaultChunks = {
45
- 'react.vendor': {
46
- name: 'react.vendor',
47
- chunks: 'all',
48
- minChunks: 1,
49
- test: isReact,
68
+ vendors: {
69
+ // picks up everything from node_modules as long as the sum of node modules is larger than minSize
70
+ //test: /[\\/]node_modules[\\/]((?!react).*)[\\/]/,
71
+ test: isVendor,
72
+ name: 'vendors',
73
+ priority: 19,
74
+ enforce: true,
75
+ // causes maxInitialRequests to be ignored, minSize still respected if specified in cacheGroup
76
+ minSize: 30000 // use the default minSize
77
+
78
+ },
79
+ vendorsAsync: {
80
+ // vendors async chunk, remaining asynchronously used node modules as single chunk file
81
+ test: /[\\/]node_modules[\\/]((?!react).*)[\\/]/,
82
+ name: 'vendors.async',
83
+ chunks: 'async',
84
+ priority: 9,
85
+ reuseExistingChunk: true,
86
+ minSize: 10000 // use smaller minSize to avoid too much potential bundle bloat due to module duplication.
87
+
88
+ },
89
+ react: {
90
+ automaticNamePrefix: 'react',
91
+ test: /[\\/]node_modules[\\/]((react).*)[\\/]/,
50
92
  priority: -10
51
93
  },
52
- vendor: {
53
- name: 'vendor',
94
+ commonsAsync: {
95
+ // commons async chunk, remaining asynchronously used modules as single chunk file
96
+ name: 'commons.async',
97
+ minChunks: 2,
98
+ // Minimum number of chunks that must share a module before splitting
99
+ chunks: 'async',
100
+ priority: -10,
101
+ reuseExistingChunk: true,
102
+ //minSize: 10000 // use smaller minSize to avoid too much potential bundle bloat due to module duplication.
103
+ minSize: 5000
104
+ },
105
+ zohocharts: {
54
106
  chunks: 'all',
55
107
  minChunks: 1,
56
- test: isVendor,
57
- priority: -10
108
+ test: /[\\/]node_modules[\\/]((@zohodesk|@zohocharts))[\\/]((zc-custom|d3).*)/,
109
+ priority: 30,
110
+ enforce: true
58
111
  }
59
112
  };
60
113
  let customChunksConfig = {};
@@ -2,9 +2,17 @@
2
2
 
3
3
  var _path = _interopRequireDefault(require("path"));
4
4
 
5
+ var _libAlias = require("./libAlias");
6
+
5
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
8
 
7
- let appPath = process.cwd();
9
+ let appPath = process.cwd(); // '^@root(.*)$': '<rootDir>/src$1',
10
+ // '^@components(.*)$': '<rootDir>/src/components$1',
11
+
12
+ let moduleNameMapper = Object.keys(_libAlias.libAlias).reduce((previousValue, key) => {
13
+ previousValue[`^${key}(.*)$`] = `${_libAlias.libAlias[key]}$1`;
14
+ return previousValue;
15
+ }, {});
8
16
  let commonConfig = {
9
17
  coverageReporters: ['json', 'html', 'json-summary', 'text'],
10
18
  collectCoverage: true,
@@ -14,10 +22,11 @@ let commonConfig = {
14
22
  '^.+\\.css$': _path.default.resolve(__dirname, '..', 'jest', 'preProcessors', 'cssPreprocessor.js'),
15
23
  '^(?!.*\\.(js|jsx|css|json)$)': _path.default.resolve(__dirname, '..', 'jest', 'preProcessors', 'otherFilesPreprocessor.js')
16
24
  },
17
- moduleNameMapper: {
25
+ moduleNameMapper: { ...moduleNameMapper,
18
26
  '\\.(css|less)$': 'identity-obj-proxy'
19
27
  },
20
- transformIgnorePatterns: ['/node_modules.*?.js$'],
28
+ transformIgnorePatterns: ['/node_modules/(?!(@zohodesk)/)'],
29
+ // transformIgnorePatterns: ['/node_modules.*?.js$'],
21
30
  moduleFileExtensions: ['js'],
22
31
  setupFiles: [_path.default.resolve(appPath, '__testUtils__', 'globals.js'), _path.default.resolve(__dirname, '..', 'jest', 'setup.js')],
23
32
  globals: {
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.libAlias = void 0;
7
+ // the reason for alias at the time was code tree shaking
8
+ // tree shaking was most compactable with ES module system
9
+ // FIXME: But there is a posiblity when these package does not have lib,
10
+ // app will work because of alias, But may be jest won't work because of not alais
11
+ // So need to think about use alais in jest
12
+ const libAlias = {
13
+ '@zohodesk/components/lib': '@zohodesk/components/es',
14
+ // '@zohodesk/zc-custom/lib': '@zohodesk/zc-custom/es',
15
+ '@zohodesk/dot/lib': '@zohodesk/dot/es',
16
+ '@zohodesk/i18n/lib': '@zohodesk/i18n/es',
17
+ '@zohodesk/icons/lib': '@zohodesk/icons/es',
18
+ '@zohodesk/normalizer/lib': '@zohodesk/normalizer/es',
19
+ '@zohodesk/perf-components/lib': '@zohodesk/perf-components/es',
20
+ '@zohodesk/perf-middleware/lib': '@zohodesk/perf-middleware/es',
21
+ '@zohodesk/permissions/lib': '@zohodesk/permissions/es',
22
+ '@zohodesk/platform-middleware/lib': '@zohodesk/platform-middleware/es',
23
+ '@zohodesk/react-dnd/lib': '@zohodesk/react-dnd/es',
24
+ '@zohodesk/router-middleware/lib': '@zohodesk/router-middleware/es',
25
+ '@zohodesk/storage/lib': '@zohodesk/storage/es',
26
+ '@zohodesk/svg/lib': '@zohodesk/svg/es',
27
+ '@zohodesk/timetracker/lib': '@zohodesk/timetracker/es',
28
+ '@zohodesk/variables/lib': '@zohodesk/variables/es',
29
+ '@zohodesk/virtualizer/lib': '@zohodesk/virtualizer/es'
30
+ };
31
+ exports.libAlias = libAlias;
@@ -10,6 +10,8 @@ var _pluginUtils = require("../pluginUtils");
10
10
 
11
11
  var _loaderUtils = require("../loaderUtils");
12
12
 
13
+ var _libAlias = require("./libAlias");
14
+
13
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
16
 
15
17
  let options = (0, _utils.getOptions)();
@@ -55,6 +57,9 @@ module.exports = {
55
57
  entry: (0, _common.getEntries)(options, 'dev'),
56
58
  devtool: sourcemap,
57
59
  mode: 'development',
60
+ // watchOptions: {
61
+ // ignored: /node_modules.(?!@zohodesk)/
62
+ // },
58
63
  output,
59
64
  stats: options.app.disableWatch ? 'errors-only' : {
60
65
  children: false
@@ -127,25 +132,7 @@ module.exports = {
127
132
  },
128
133
  resolve: {
129
134
  modules: [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules'],
130
- alias: disableES5Transpile ? {
131
- '@zohodesk/components/lib': '@zohodesk/components/es',
132
- // "@zohodesk/zc-custom/lib": "@zohodesk/zc-custom/es",
133
- '@zohodesk/dot/lib': '@zohodesk/dot/es',
134
- '@zohodesk/i18n/lib': '@zohodesk/i18n/es',
135
- '@zohodesk/icons/lib': '@zohodesk/icons/es',
136
- '@zohodesk/normalizer/lib': '@zohodesk/normalizer/es',
137
- '@zohodesk/perf-components/lib': '@zohodesk/perf-components/es',
138
- '@zohodesk/perf-middleware/lib': '@zohodesk/perf-middleware/es',
139
- '@zohodesk/permissions/lib': '@zohodesk/permissions/es',
140
- '@zohodesk/platform-middleware/lib': '@zohodesk/platform-middleware/es',
141
- '@zohodesk/react-dnd/lib': '@zohodesk/react-dnd/es',
142
- '@zohodesk/router-middleware/lib': '@zohodesk/router-middleware/es',
143
- '@zohodesk/storage/lib': '@zohodesk/storage/es',
144
- '@zohodesk/svg/lib': '@zohodesk/svg/es',
145
- '@zohodesk/timetracker/lib': '@zohodesk/timetracker/es',
146
- '@zohodesk/variables/lib': '@zohodesk/variables/es',
147
- '@zohodesk/virtualizer/lib': '@zohodesk/virtualizer/es'
148
- } : {}
135
+ alias: disableES5Transpile ? _libAlias.libAlias : {}
149
136
  },
150
137
  resolveLoader: {
151
138
  modules: [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
@@ -10,8 +10,11 @@ var _pluginUtils = require("../pluginUtils");
10
10
 
11
11
  var _loaderUtils = require("../loaderUtils");
12
12
 
13
+ var _libAlias = require("./libAlias");
14
+
13
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
16
 
17
+ // import TerserPlugin from 'terser-webpack-plugin';
15
18
  let options = (0, _utils.getOptions)();
16
19
  let {
17
20
  app: {
@@ -76,12 +79,23 @@ module.exports = {
76
79
  },
77
80
  concatenateModules: true,
78
81
  minimize: true,
82
+ // by default if minimize: true in webpack minimize then webpack automaticaly add TerserPlugin,
83
+ // So we are overrideing it.
84
+ // minimizer: [
85
+ // new TerserPlugin({
86
+ // cache: true,
87
+ // parallel: true,
88
+ // sourceMap: isDevelopment && enableSMap,
89
+ // exclude: /\/smap/
90
+ // })
91
+ // ],
79
92
  moduleIds: 'named'
80
93
  },
81
94
  stats: {
82
95
  children: false,
83
96
  colors: true,
84
97
  // excludeAssets: /i18n/,
98
+ // excludeAssets: /./,
85
99
  warningsFilter: /\[mini-css-extract-plugin\]/
86
100
  },
87
101
  plugins: (0, _pluginUtils.getProdPlugins)(options, output.publicPath),
@@ -113,7 +127,8 @@ module.exports = {
113
127
  }] : null].filter(Boolean),
114
128
  cacheDirectory: true
115
129
  }
116
- }],
130
+ }].filter(Boolean),
131
+ // include: path.join(appPath, folder)
117
132
  include: module => {
118
133
  let srcPath = _path.default.join(appPath, folder);
119
134
 
@@ -130,7 +145,7 @@ module.exports = {
130
145
  exclude: /\.module\.css$/,
131
146
  use: (0, _loaderUtils.getCSSLoaders)(hasRTL, rtlExclude, '[local]', false, null)
132
147
  } : null, {
133
- test: seperateCssModules ? /\.module\.css$/ : /(\.module)?\.css$/,
148
+ test: seperateCssModules ? /\.module\.css$/ : /\.css$/,
134
149
  use: (0, _loaderUtils.getCSSLoaders)(hasRTL, rtlExclude, false, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
135
150
  }, {
136
151
  test: /\.jpe?g$|\.gif$|\.png$/,
@@ -194,25 +209,7 @@ module.exports = {
194
209
  },
195
210
  resolve: {
196
211
  modules: [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules'],
197
- alias: disableES5Transpile ? {
198
- '@zohodesk/components/lib': '@zohodesk/components/es',
199
- // '@zohodesk/zc-custom/lib': '@zohodesk/zc-custom/es',
200
- '@zohodesk/dot/lib': '@zohodesk/dot/es',
201
- '@zohodesk/i18n/lib': '@zohodesk/i18n/es',
202
- '@zohodesk/icons/lib': '@zohodesk/icons/es',
203
- '@zohodesk/normalizer/lib': '@zohodesk/normalizer/es',
204
- '@zohodesk/perf-components/lib': '@zohodesk/perf-components/es',
205
- '@zohodesk/perf-middleware/lib': '@zohodesk/perf-middleware/es',
206
- '@zohodesk/permissions/lib': '@zohodesk/permissions/es',
207
- '@zohodesk/platform-middleware/lib': '@zohodesk/platform-middleware/es',
208
- '@zohodesk/react-dnd/lib': '@zohodesk/react-dnd/es',
209
- '@zohodesk/router-middleware/lib': '@zohodesk/router-middleware/es',
210
- '@zohodesk/storage/lib': '@zohodesk/storage/es',
211
- '@zohodesk/svg/lib': '@zohodesk/svg/es',
212
- '@zohodesk/timetracker/lib': '@zohodesk/timetracker/es',
213
- '@zohodesk/variables/lib': '@zohodesk/variables/es',
214
- '@zohodesk/virtualizer/lib': '@zohodesk/virtualizer/es'
215
- } : {}
212
+ alias: disableES5Transpile ? _libAlias.libAlias : {}
216
213
  },
217
214
  resolveLoader: {
218
215
  modules: [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
@@ -18,6 +18,18 @@ var _default = {
18
18
  value: null,
19
19
  cli: 'ssl_cert_url'
20
20
  },
21
+ preprocess: {
22
+ // This option is for tell the react-cli which in preprocessor js file path
23
+ runner: {
24
+ value: '',
25
+ cli: 'preprocessor'
26
+ },
27
+ // usally preprocessor run in nodemon for, start and docs , preprocessor
28
+ stopNodemon: {
29
+ value: false,
30
+ cli: 'stop_nodemon'
31
+ }
32
+ },
21
33
  i18n: {
22
34
  chunkSplitEnable: {
23
35
  value: false,
@@ -22,7 +22,7 @@ var _default = (type = 'git', cwd = process.cwd()) => {
22
22
  });
23
23
  }
24
24
 
25
- let [currentBranch] = results.output.filter(d => d);
25
+ let [currentBranch] = results && results.output ? results.output.filter(d => d) : [''];
26
26
  return currentBranch.replace(/(\r\n|\n|\r)/gm, '');
27
27
  };
28
28
 
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
+ var _child_process = require("child_process");
9
+
8
10
  var _fs = _interopRequireDefault(require("fs"));
9
11
 
10
12
  var _path = _interopRequireDefault(require("path"));
@@ -13,6 +15,9 @@ var _schemas = _interopRequireDefault(require("../schemas"));
13
15
 
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
 
18
+ // import { argv } from 'process';
19
+ const args = process.argv.slice(2); // console.log('argv', argv);
20
+
16
21
  const NPM_CONFIG_PREFIX = 'npm_config_'; // TODO: we have to do option parse logic little better
17
22
  // if user use react-cli stritly without using npm scripts options won't work,
18
23
  // So we have to write our own option parse logic or some other library
@@ -37,6 +42,52 @@ keysWithColon.forEach(key => {
37
42
  processEnv[nkey] = processEnv[key];
38
43
  });
39
44
 
45
+ function getNpmVersion() {
46
+ // require("child_process").
47
+ let vers = '6';
48
+
49
+ try {
50
+ [vers] = (0, _child_process.execSync)('npm -v').toString().trim().split('.');
51
+ } catch (error) {
52
+ console.log(error);
53
+ }
54
+
55
+ return vers;
56
+ }
57
+
58
+ function getCWD() {
59
+ // require("child_process").
60
+ let cwd = process.cwd();
61
+
62
+ try {
63
+ let ress = (0, _child_process.execSync)('npm bin').toString();
64
+ let i = ress.lastIndexOf('node_modules');
65
+ cwd = i === -1 ? cwd : ress.slice(0, i);
66
+ } catch (error) {
67
+ console.log(error);
68
+ }
69
+
70
+ return cwd;
71
+ } // experimental argumnet parsing logic
72
+
73
+
74
+ args.forEach(option => {
75
+ if (/^--./.test(option)) {
76
+ let equIndex = option.indexOf('='); // equIndex = equIndex === -1 ? option.length : equIndex;
77
+
78
+ let key = option.slice(2, equIndex);
79
+ let value = option.slice(equIndex + 1);
80
+
81
+ if (equIndex === -1) {
82
+ key = option.slice(2);
83
+ value = true;
84
+ }
85
+
86
+ key = key.replace(/-|:/g, '_');
87
+ processEnv[key] = value;
88
+ }
89
+ });
90
+
40
91
  let defaulter = (target, source) => {
41
92
  let defaultObject = {};
42
93
  Object.keys(target).forEach(key => {
@@ -87,7 +138,10 @@ let getOptions = () => {
87
138
  userSchemas = require(packagePath)['react-cli'] || {};
88
139
  }
89
140
 
90
- let options = defaulter(_schemas.default, userSchemas || {});
141
+ let options = defaulter(_schemas.default, userSchemas || {}); // for future may be for npm 8 edge cases
142
+
143
+ options.npmVersion = getNpmVersion();
144
+ options.cwd = getCWD();
91
145
  options.packageVersion = process.env.npm_package_version;
92
146
  global.reactCLIOptions = options;
93
147
  return options;
@@ -45,12 +45,21 @@ let fileHandler = {
45
45
  };
46
46
  exports.fileHandler = fileHandler;
47
47
 
48
+ const isObject = obj => obj && obj.constructor === {}.constructor;
49
+
50
+ const isArray = obj => obj && obj.constructor === [].constructor; // In below funtion
51
+ // this function is for concat two json object like _.extend,
52
+ // if botha array we concat them
53
+ // if both object we use call this function recurcively
54
+ // if both differend data type we will just assign it
55
+
56
+
48
57
  let jsonConcate = (receiverObj, senterObj) => {
49
58
  Object.keys(senterObj).map(key => {
50
59
  if (Object.prototype.hasOwnProperty.call(receiverObj, key)) {
51
- if (receiverObj[key].constructor === {}.constructor && senterObj[key].constructor === {}.constructor) {
60
+ if (isObject(receiverObj[key]) && isObject(senterObj[key])) {
52
61
  jsonConcate(receiverObj[key], senterObj[key]);
53
- } else if (receiverObj[key].constructor === [].constructor && senterObj[key].constructor === [].constructor) {
62
+ } else if (isArray(receiverObj[key]) && isArray(senterObj[key])) {
54
63
  receiverObj[key] = receiverObj[key].concat(senterObj[key]);
55
64
  } else {
56
65
  receiverObj[key] = senterObj[key];