@zohodesk/react-cli 1.1.6 → 1.1.8-exp.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +180 -180
  3. package/.prettierrc +6 -6
  4. package/Changelog.md +1019 -1019
  5. package/README.md +1293 -1244
  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 +18 -0
  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/__test__/markdownLoader.spec.js +145 -0
  34. package/lib/loaders/docsLoader.js +3 -0
  35. package/lib/loaders/markdownLoader.js +71 -0
  36. package/lib/loaders/workerLoader.js +9 -9
  37. package/lib/pluginUtils/getDevPlugins.js +8 -7
  38. package/lib/pluginUtils/getProdPlugins.js +6 -6
  39. package/lib/plugins/CustomAttributePlugin.md +35 -35
  40. package/lib/plugins/EFCPlugin.md +6 -6
  41. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  42. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  43. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  44. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  45. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
  46. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  47. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  48. package/lib/plugins/ResourceHintsPlugin.js +30 -20
  49. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
  50. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  51. package/lib/plugins/SelectorPlugin.js +29 -29
  52. package/lib/plugins/ServiceWorkerPlugin.js +9 -9
  53. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  54. package/lib/plugins/VariableConversionCollector.js +59 -59
  55. package/lib/plugins/utils/fileHandling.js +35 -42
  56. package/lib/plugins/variableConvertorUtils.js +9 -9
  57. package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
  58. package/lib/postcss-plugins/__test__/test1Input.css +38 -38
  59. package/lib/postcss-plugins/__test__/test1Output.css +38 -38
  60. package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
  61. package/lib/schemas/index.js +23 -36
  62. package/lib/sh/pre-commit.sh +34 -34
  63. package/lib/sh/reportPublish.sh +45 -45
  64. package/lib/utils/buildstats.html +148 -148
  65. package/lib/utils/cssClassNameGenerate.js +13 -13
  66. package/lib/utils/deprecationSupport.js +144 -0
  67. package/lib/utils/getOptions.js +18 -78
  68. package/lib/utils/resultSchema.json +73 -73
  69. package/npm-shrinkwrap.json +33393 -33393
  70. package/npm8.md +9 -9
  71. package/package.json +123 -122
  72. package/postpublish.js +8 -8
  73. package/result.json +1 -0
  74. package/templates/app/.eslintrc.js +140 -140
  75. package/templates/app/README.md +12 -12
  76. package/templates/app/app/index.html +24 -24
  77. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  78. package/templates/app/app/properties/i18nkeys.json +3 -3
  79. package/templates/app/docs/all.html +69 -69
  80. package/templates/app/mockapi/index.js +18 -18
  81. package/templates/app/package.json +37 -37
  82. package/templates/app/src/actions/SampleActions/index.js +37 -37
  83. package/templates/app/src/actions/index.js +65 -65
  84. package/templates/app/src/appUrls.js +19 -19
  85. package/templates/app/src/components/Alert/Alert.js +134 -134
  86. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  87. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  88. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  89. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  90. package/templates/app/src/components/Sample/SampleList.js +61 -61
  91. package/templates/app/src/components/Slider/Slider.css +41 -41
  92. package/templates/app/src/components/Slider/Slider.js +55 -55
  93. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  94. package/templates/app/src/containers/AppContainer/index.js +96 -96
  95. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  96. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  97. package/templates/app/src/containers/DevTools/index.js +10 -10
  98. package/templates/app/src/containers/Header/index.js +67 -67
  99. package/templates/app/src/containers/Header/index.module.css +43 -43
  100. package/templates/app/src/containers/Redirect/index.js +63 -63
  101. package/templates/app/src/containers/Redirector/index.js +47 -47
  102. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  103. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  104. package/templates/app/src/historyChange.js +5 -5
  105. package/templates/app/src/index.html +10 -10
  106. package/templates/app/src/index.js +24 -24
  107. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  108. package/templates/app/src/reducers/alertData.js +11 -11
  109. package/templates/app/src/reducers/index.js +6 -6
  110. package/templates/app/src/reducers/samples.js +19 -19
  111. package/templates/app/src/store/configureStore.dev.js +51 -51
  112. package/templates/app/src/store/configureStore.js +5 -5
  113. package/templates/app/src/store/configureStore.prod.js +26 -26
  114. package/templates/app/src/util/Common.js +5 -5
  115. package/templates/app/src/util/RequestAPI.js +132 -132
  116. package/templates/docs/all.html +250 -249
  117. package/templates/docs/component.html +179 -178
  118. package/templates/docs/components.html +222 -221
  119. package/templates/docs/css/b.min.css +6 -6
  120. package/templates/docs/css/component.css +42 -42
  121. package/templates/docs/css/componentTest.css +6 -6
  122. package/templates/docs/css/hopscotch.css +585 -585
  123. package/templates/docs/css/markdown.css +202 -0
  124. package/templates/docs/css/style.css +1022 -1022
  125. package/templates/docs/impactReportTemplate.html +154 -154
  126. package/templates/docs/index.html +1502 -1501
  127. package/templates/docs/js/active-line.js +72 -72
  128. package/templates/docs/js/b.min.js +7 -7
  129. package/templates/docs/js/codemirror.js +9680 -9680
  130. package/templates/docs/js/designTokens.js +334 -334
  131. package/templates/docs/js/j.min.js +4 -4
  132. package/templates/docs/js/javascript.js +874 -874
  133. package/templates/docs/js/matchbrackets.js +145 -145
  134. package/unittest/index.html +37 -0
@@ -1,57 +1,57 @@
1
- # Pattern filtering
2
-
3
- As replacement for exclude we now have patterns in place of exclude to include or exclude a file based on its name in package.json.
4
-
5
-
6
- # Example for patterns :
7
-
8
- **Old System** :
9
- To exclude `node_modules` folder from convertion for the `cssVariableReplacement` plugin, we used to have :
10
-
11
- `react-cli > app > exclude > cssVariableReplacement` as ['node_modules'] in `package.json`
12
-
13
- Example :
14
-
15
- "exclude": {
16
- "cssVariableReplacement": [
17
- "node_modules"
18
- ]
19
- },
20
-
21
- **New System** :
22
-
23
- To include all files for convertion for the `valueReplacer` plugin, we now have :
24
-
25
- `react-cli > app > patterns > valueReplacer` as ['*'] in `package.json`
26
-
27
- To include `src` files for convertion for the `cssVariableReplacement` plugin, we now have :
28
-
29
- `react-cli > app > patterns > hoverActive` as ['src'] in `package.json`
30
-
31
- To exclude `node_modules` files for convertion for the `hoverActive` plugin, we now have :
32
-
33
- `react-cli > app > patterns > cssVariableReplacement` as ['!node_modules'] in `package.json`
34
- Here the `!` denotes that the folder structure/file is not to be converted.
35
-
36
- Example :
37
-
38
- "patterns": {
39
- "valueReplacer": [
40
- "*"
41
- ],
42
- "hoverActive": [
43
- "src"
44
- ],
45
- "cssVariableReplacement": [
46
- "!node_modules"
47
- ],
48
- },
49
-
50
- Note :
51
- `patterns` also added support for cssUniqueness to be applied to selective files.
52
-
53
- "patterns" : {
54
- "cssUniqueness": [
55
- "*"
56
- ],
1
+ # Pattern filtering
2
+
3
+ As replacement for exclude we now have patterns in place of exclude to include or exclude a file based on its name in package.json.
4
+
5
+
6
+ # Example for patterns :
7
+
8
+ **Old System** :
9
+ To exclude `node_modules` folder from convertion for the `cssVariableReplacement` plugin, we used to have :
10
+
11
+ `react-cli > app > exclude > cssVariableReplacement` as ['node_modules'] in `package.json`
12
+
13
+ Example :
14
+
15
+ "exclude": {
16
+ "cssVariableReplacement": [
17
+ "node_modules"
18
+ ]
19
+ },
20
+
21
+ **New System** :
22
+
23
+ To include all files for convertion for the `valueReplacer` plugin, we now have :
24
+
25
+ `react-cli > app > patterns > valueReplacer` as ['*'] in `package.json`
26
+
27
+ To include `src` files for convertion for the `cssVariableReplacement` plugin, we now have :
28
+
29
+ `react-cli > app > patterns > hoverActive` as ['src'] in `package.json`
30
+
31
+ To exclude `node_modules` files for convertion for the `hoverActive` plugin, we now have :
32
+
33
+ `react-cli > app > patterns > cssVariableReplacement` as ['!node_modules'] in `package.json`
34
+ Here the `!` denotes that the folder structure/file is not to be converted.
35
+
36
+ Example :
37
+
38
+ "patterns": {
39
+ "valueReplacer": [
40
+ "*"
41
+ ],
42
+ "hoverActive": [
43
+ "src"
44
+ ],
45
+ "cssVariableReplacement": [
46
+ "!node_modules"
47
+ ],
48
+ },
49
+
50
+ Note :
51
+ `patterns` also added support for cssUniqueness to be applied to selective files.
52
+
53
+ "patterns" : {
54
+ "cssUniqueness": [
55
+ "*"
56
+ ],
57
57
  }
@@ -1,35 +1,35 @@
1
- npm WARN deprecated babel-eslint@10.1.0: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
2
- npm WARN deprecated eslint-loader@4.0.2: This loader has been deprecated. Please use eslint-webpack-plugin
3
- npm WARN deprecated gitlab@14.2.2: The gitlab package has found a new home in the @gitbeaker organization. For the latest gitlab node library, check out @gitbeaker/node. A full list of the features can be found here: https://github.com/jdalrymple/gitbeaker#readme
4
- npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
5
- npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
6
- npm WARN deprecated webdriverio@4.14.4: outdated version, please use @next
7
- npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
8
- npm WARN deprecated cross-spawn-async@1.0.1: cross-spawn no longer requires a build toolchain, use it instead
9
- npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
10
- npm WARN deprecated core-js@2.6.12: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
11
- npm WARN deprecated har-validator@5.1.5: this library is no longer supported
12
- npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
13
- npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
14
- npm WARN deprecated sane@4.1.0: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
15
- npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
16
- npm WARN deprecated flatten@1.0.3: flatten is deprecated in favor of utility frameworks such as lodash.
17
- npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/chokidar/node_modules/fsevents):
18
- npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
19
- npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^2.1.2 (node_modules/jest-haste-map/node_modules/fsevents):
20
- npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
21
- npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.2 (node_modules/nodemon/node_modules/chokidar/node_modules/fsevents):
22
- npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
23
- npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.2 (node_modules/watchpack/node_modules/chokidar/node_modules/fsevents):
24
- npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
25
- npm WARN check2@1.0.0 No description
26
- npm WARN check2@1.0.0 No repository field.
27
-
28
- + @zohodesk/react-cli@0.0.1-beta.165
29
- updated 1 package and audited 1899 packages in 51.509s
30
-
31
- 21 packages are looking for funding
32
- run `npm fund` for details
33
-
34
- found 42 vulnerabilities (2 low, 20 moderate, 8 high, 12 critical)
35
- run `npm audit fix` to fix them, or `npm audit` for details
1
+ npm WARN deprecated babel-eslint@10.1.0: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
2
+ npm WARN deprecated eslint-loader@4.0.2: This loader has been deprecated. Please use eslint-webpack-plugin
3
+ npm WARN deprecated gitlab@14.2.2: The gitlab package has found a new home in the @gitbeaker organization. For the latest gitlab node library, check out @gitbeaker/node. A full list of the features can be found here: https://github.com/jdalrymple/gitbeaker#readme
4
+ npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
5
+ npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
6
+ npm WARN deprecated webdriverio@4.14.4: outdated version, please use @next
7
+ npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
8
+ npm WARN deprecated cross-spawn-async@1.0.1: cross-spawn no longer requires a build toolchain, use it instead
9
+ npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
10
+ npm WARN deprecated core-js@2.6.12: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
11
+ npm WARN deprecated har-validator@5.1.5: this library is no longer supported
12
+ npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
13
+ npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
14
+ npm WARN deprecated sane@4.1.0: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
15
+ npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
16
+ npm WARN deprecated flatten@1.0.3: flatten is deprecated in favor of utility frameworks such as lodash.
17
+ npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/chokidar/node_modules/fsevents):
18
+ npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
19
+ npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^2.1.2 (node_modules/jest-haste-map/node_modules/fsevents):
20
+ npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
21
+ npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.2 (node_modules/nodemon/node_modules/chokidar/node_modules/fsevents):
22
+ npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
23
+ npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.2 (node_modules/watchpack/node_modules/chokidar/node_modules/fsevents):
24
+ npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
25
+ npm WARN check2@1.0.0 No description
26
+ npm WARN check2@1.0.0 No repository field.
27
+
28
+ + @zohodesk/react-cli@0.0.1-beta.165
29
+ updated 1 package and audited 1899 packages in 51.509s
30
+
31
+ 21 packages are looking for funding
32
+ run `npm fund` for details
33
+
34
+ found 42 vulnerabilities (2 low, 20 moderate, 8 high, 12 critical)
35
+ run `npm audit fix` to fix them, or `npm audit` for details
package/files/eslintrc.js CHANGED
@@ -1,62 +1,62 @@
1
- const [off, , error] = ['off', 'warn', 'error'];
2
-
3
- module.exports = {
4
- env: {
5
- browser: true,
6
- es2021: true,
7
- },
8
- extends: [
9
- 'plugin:react/recommended',
10
- 'plugin:react-hooks/recommended',
11
- 'airbnb',
12
- 'prettier',
13
- ],
14
- parserOptions: {
15
- ecmaFeatures: {
16
- jsx: true,
17
- },
18
- ecmaVersion: 12,
19
- sourceType: 'module',
20
- },
21
- plugins: [
22
- 'react',
23
- 'css-modules',
24
- '@zohodesk/zsecurity',
25
- '@zohodesk/react-performance',
26
- ],
27
- rules: {
28
- // Internal Rules
29
- '@zohodesk/react-performance/no-ref-mapstatetoprops': error,
30
- '@zohodesk/zsecurity/no-unsecure-html': error,
31
- '@zohodesk/zsecurity/no-protocol-check': error,
32
-
33
- // CSS Module Rules
34
- 'css-modules/no-unused-class': [error, { camelCase: true }],
35
- 'css-modules/no-undef-class': [error, { camelCase: 'only' }],
36
-
37
- 'import/no-unresolved': off,
38
- 'import/no-extraneous-dependencies': off,
39
-
40
- // As redux used
41
- 'no-shadow': off, // As we import the action files and use the same name in getting from props built from connect.
42
- 'react/jsx-filename-extension': off,
43
-
44
- // As we don't follow
45
- 'react/require-default-props': off,
46
- 'react/jsx-props-no-spreading': off,
47
-
48
- // As we didn't update
49
- 'react/jsx-fragments': off,
50
-
51
- // Not needed
52
- 'no-plusplus': off,
53
- 'no-unused-expressions': [
54
- error,
55
- {
56
- allowShortCircuit: true,
57
- allowTernary: true,
58
- },
59
- ],
60
- 'react/jsx-no-target-blank': error,
61
- },
62
- };
1
+ const [off, , error] = ['off', 'warn', 'error'];
2
+
3
+ module.exports = {
4
+ env: {
5
+ browser: true,
6
+ es2021: true,
7
+ },
8
+ extends: [
9
+ 'plugin:react/recommended',
10
+ 'plugin:react-hooks/recommended',
11
+ 'airbnb',
12
+ 'prettier',
13
+ ],
14
+ parserOptions: {
15
+ ecmaFeatures: {
16
+ jsx: true,
17
+ },
18
+ ecmaVersion: 12,
19
+ sourceType: 'module',
20
+ },
21
+ plugins: [
22
+ 'react',
23
+ 'css-modules',
24
+ '@zohodesk/zsecurity',
25
+ '@zohodesk/react-performance',
26
+ ],
27
+ rules: {
28
+ // Internal Rules
29
+ '@zohodesk/react-performance/no-ref-mapstatetoprops': error,
30
+ '@zohodesk/zsecurity/no-unsecure-html': error,
31
+ '@zohodesk/zsecurity/no-protocol-check': error,
32
+
33
+ // CSS Module Rules
34
+ 'css-modules/no-unused-class': [error, { camelCase: true }],
35
+ 'css-modules/no-undef-class': [error, { camelCase: 'only' }],
36
+
37
+ 'import/no-unresolved': off,
38
+ 'import/no-extraneous-dependencies': off,
39
+
40
+ // As redux used
41
+ 'no-shadow': off, // As we import the action files and use the same name in getting from props built from connect.
42
+ 'react/jsx-filename-extension': off,
43
+
44
+ // As we don't follow
45
+ 'react/require-default-props': off,
46
+ 'react/jsx-props-no-spreading': off,
47
+
48
+ // As we didn't update
49
+ 'react/jsx-fragments': off,
50
+
51
+ // Not needed
52
+ 'no-plusplus': off,
53
+ 'no-unused-expressions': [
54
+ error,
55
+ {
56
+ allowShortCircuit: true,
57
+ allowTernary: true,
58
+ },
59
+ ],
60
+ 'react/jsx-no-target-blank': error,
61
+ },
62
+ };
@@ -1,3 +1,3 @@
1
- module.exports = {
2
- trailingComma: 'none',
3
- };
1
+ module.exports = {
2
+ trailingComma: 'none',
3
+ };
@@ -15,35 +15,53 @@ var _testPattern = require("./testPattern");
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
- let isWindows = _os.default.platform().toLowerCase() === 'win32';
19
- let ps = _path.default.sep;
20
- let options = (0, _utils.getOptions)();
21
- let {
18
+ const isWindows = _os.default.platform().toLowerCase() === 'win32';
19
+ const ps = _path.default.sep;
20
+ const options = (0, _utils.getOptions)();
21
+ const {
22
22
  app: {
23
23
  vendorExclude,
24
24
  customChunks,
25
- vendorInclude
25
+ vendorInclude,
26
+ customChunksBaseConfig
26
27
  }
27
28
  } = options;
29
+ const reactBundleIncludeList = ['react', 'react-dom', 'react-redux', 'react-transition-group', 'scheduler', 'prop-types'];
30
+ const vendorExcludeList = ['script-loader', 'raw-loader', ...reactBundleIncludeList, ...vendorExclude.map(vendorPath => vendorPath.replace(/[/\\]/g, _path.default.sep))];
31
+ const vendorIncludeList = [...vendorInclude].map(vendorPath => vendorPath.replace(/[/\\]/g, _path.default.sep));
28
32
 
29
- let isVendor = function isVendor(module) {
30
- let {
33
+ const isVendor = function isVendor(module) {
34
+ const {
31
35
  userRequest
32
36
  } = module;
33
- let excludeList = ['script-loader', 'raw-loader', 'react', 'react-dom'];
34
- excludeList = [...excludeList, ...vendorExclude];
35
- return userRequest && (vendorInclude.some(item => userRequest.indexOf(item) !== -1) || userRequest.indexOf('node_modules') >= 0 && userRequest.endsWith('.css') === false && userRequest.endsWith('publicPathConfig.js') === false && excludeList.every(item => userRequest.indexOf(`node_modules${ps}${item}${ps}`) === -1));
37
+ return userRequest && (vendorIncludeList.some(item => userRequest.indexOf(item) !== -1) || userRequest.indexOf('node_modules') >= 0 && userRequest.endsWith('.css') === false && userRequest.endsWith('publicPathConfig.js') === false && vendorExcludeList.every(item => userRequest.indexOf(`node_modules${ps}${item}${ps}`) === -1));
36
38
  };
37
39
 
38
- let isReact = module => {
39
- let {
40
+ const isReact = module => {
41
+ const {
40
42
  userRequest
41
43
  } = module;
42
- let reactBundle = ['react', 'react-dom'];
43
- return userRequest && reactBundle.some(pkg => userRequest.indexOf(`node_modules${ps}${pkg}${ps}`) >= 0);
44
+ return userRequest && reactBundleIncludeList.some(pkg => userRequest.indexOf(`node_modules${ps}${pkg}${ps}`) >= 0);
44
45
  };
45
46
 
46
- let defaultChunks = {
47
+ function rulesMatcher(pattern) {
48
+ if (typeof pattern === 'function') {
49
+ return pattern;
50
+ }
51
+
52
+ if (Array.isArray(pattern)) {
53
+ return ({
54
+ userRequest
55
+ }) => (0, _testPattern.testPattern)(userRequest, pattern);
56
+ }
57
+
58
+ return new RegExp(isWindows ? pattern.replace(/\//g, '\\') : pattern);
59
+ }
60
+
61
+ const baseSplitChunkConfig = Object.assign({
62
+ minSize: 15000
63
+ }, customChunksBaseConfig);
64
+ const specificCacheGroupConfig = {
47
65
  'react.vendor': {
48
66
  name: 'react.vendor',
49
67
  chunks: 'all',
@@ -63,45 +81,35 @@ let defaultChunks = {
63
81
  priority: -10
64
82
  }
65
83
  };
66
- let customChunksConfig = {};
84
+ const customChunksConfig = {};
67
85
  customChunks.map((obj, index) => ({
68
86
  name: obj.name,
69
- pattern: obj.pattern,
87
+ chunks: obj.chunks || 'all',
70
88
  minChunks: obj.minChunks || obj.size || 2,
71
- rules: obj.rules,
72
- // includeDepenency: obj.includeDepenency || false,
89
+ pattern: obj.pattern,
73
90
  priority: obj.priority || -10 * (index + 2),
74
- enforce: obj.enforce || true,
75
- maxSize: obj.maxSize,
76
- // || 0,
91
+ enforce: obj.enforce,
77
92
  minSize: obj.minSize,
78
93
  // || 20000,
79
- chunks: obj.chunks || 'all'
80
- })).map(({
94
+ maxSize: obj.maxSize,
95
+ // || 0,
96
+ reuseExistingChunk: obj.reuseExistingChunk,
97
+ cacheGroupName: obj.cacheGroupName || obj.name
98
+ })).forEach(({
81
99
  name,
82
- pattern,
100
+ chunks = 'all',
83
101
  minChunks,
84
- rules,
102
+ pattern,
85
103
  priority,
86
- // includeDepenency,
87
104
  enforce,
88
105
  minSize,
89
106
  maxSize,
90
- chunks = 'all'
107
+ reuseExistingChunk,
108
+ cacheGroupName
91
109
  }) => {
92
- let obj = {
93
- name,
94
- test: rules ? m => {
95
- const {
96
- userRequest
97
- } = m;
98
- return (0, _testPattern.testPattern)(userRequest, rules); // return (
99
- // pkgs.some(p => isRelated(userRequest, p)) ||
100
- // (includeDepenency && isDependency(m, pkgs))
101
- // );
102
- } : new RegExp(isWindows ? pattern.replace(/\//g, '\\') : pattern),
110
+ const obj = {
111
+ test: rulesMatcher(pattern),
103
112
  chunks,
104
- enforce,
105
113
  minChunks,
106
114
  priority
107
115
  };
@@ -114,13 +122,25 @@ customChunks.map((obj, index) => ({
114
122
  obj.maxSize = maxSize;
115
123
  }
116
124
 
117
- return customChunksConfig[name] = obj;
125
+ if (enforce !== false) {
126
+ obj.enforce = true;
127
+ }
128
+
129
+ if (name !== undefined) {
130
+ obj.name = name;
131
+ }
132
+
133
+ if (reuseExistingChunk !== undefined) {
134
+ obj.reuseExistingChunk = reuseExistingChunk;
135
+ }
136
+
137
+ customChunksConfig[cacheGroupName] = obj;
118
138
  });
119
- var _default = {
120
- minSize: 12000,
139
+ const splitChunkConfig = Object.assign({}, baseSplitChunkConfig, {
121
140
  cacheGroups: Object.assign({
122
141
  default: false,
123
142
  vendors: false
124
- }, defaultChunks, customChunksConfig)
125
- };
143
+ }, specificCacheGroupConfig, customChunksConfig)
144
+ });
145
+ var _default = splitChunkConfig;
126
146
  exports.default = _default;
@@ -13,25 +13,25 @@ var _path = require("path");
13
13
  const isWindows = _path.sep !== '/'; // this function will return true if pattern matched
14
14
 
15
15
  function _testPattern(req, pattern) {
16
- let modifyedPattern = pattern;
16
+ let modifiedPattern = pattern;
17
17
 
18
- if (/[*.$^]/.test(modifyedPattern)) {
18
+ if (/[*.$^]/.test(modifiedPattern)) {
19
19
  if (isWindows) {
20
- // modifyedPattern = pattern.replace(/\//g, ps.replace(/\\/g, '\\\\'));
21
- modifyedPattern = modifyedPattern.replace(/\//g, '\\\\');
20
+ // modifiedPattern = pattern.replace(/\//g, ps.replace(/\\/g, '\\\\'));
21
+ modifiedPattern = modifiedPattern.replace(/\//g, '\\\\');
22
22
  }
23
23
 
24
- modifyedPattern = modifyedPattern.replace(/\./g, '\\.').replace(/\*/g, '.*');
25
- const re = new RegExp(modifyedPattern);
24
+ modifiedPattern = modifiedPattern.replace(/\./g, '\\.').replace(/\*/g, '.*');
25
+ const re = new RegExp(modifiedPattern);
26
26
  return re.test(req);
27
27
  }
28
28
 
29
29
  if (isWindows) {
30
- // modifyedPattern = pattern.replace(/\//g, ps.replace(/\\/g, '\\\\'));
31
- modifyedPattern = modifyedPattern.replace(/\//g, '\\');
30
+ // modifiedPattern = pattern.replace(/\//g, ps.replace(/\\/g, '\\\\'));
31
+ modifiedPattern = modifiedPattern.replace(/\//g, '\\');
32
32
  }
33
33
 
34
- return req.indexOf(modifyedPattern) !== -1;
34
+ return req.indexOf(modifiedPattern) !== -1;
35
35
  }
36
36
 
37
37
  function testPattern(req, pattern) {
@@ -67,10 +67,10 @@ module.exports = {
67
67
  }],
68
68
  include: _path.default.join(appPath, 'src')
69
69
  }
70
- /*,
71
- {
72
- test: /\.css$/,
73
- use: [MiniCssExtractPlugin.loader, 'css-loader']
70
+ /*,
71
+ {
72
+ test: /\.css$/,
73
+ use: [MiniCssExtractPlugin.loader, 'css-loader']
74
74
  }*/
75
75
  , {
76
76
  test: /(\.module)?\.css$/,
@@ -39,7 +39,8 @@ const {
39
39
  selectorReplace,
40
40
  devConsoleExculde,
41
41
  sourcemap,
42
- crossorigin
42
+ crossorigin,
43
+ postCssPluginOrder
43
44
  }
44
45
  } = options;
45
46
  const {
@@ -61,6 +62,24 @@ if (crossorigin) {
61
62
  output.crossOriginLoading = 'anonymous';
62
63
  }
63
64
 
65
+ let appExclude = [];
66
+ Object.keys(options.app.exclude).forEach(key => {
67
+ if (options.app.exclude[key].length > 0) {
68
+ appExclude.push(key);
69
+ }
70
+ });
71
+
72
+ if (appExclude.length > 0) {
73
+ // eslint-disable-next-line no-console
74
+ console.log('\x1b[33m%s\x1b[0m', '\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n ');
75
+ appExclude.forEach(exclude => {
76
+ // eslint-disable-next-line no-console
77
+ console.log('\x1b[33m%s\x1b[0m', `Please move " react-cli > app > exclude > ${exclude} " to " react-cli > app > patterns > ${exclude} " following the new pattern feature \n`);
78
+ }); // eslint-disable-next-line no-console
79
+
80
+ console.log('\x1b[33m%s\x1b[0m', '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n ');
81
+ }
82
+
64
83
  module.exports = {
65
84
  entry: (0, _common.getEntries)(options, 'dev'),
66
85
  devtool: sourcemap,
@@ -109,7 +128,8 @@ module.exports = {
109
128
  selectorWeightConfig,
110
129
  classNameBlob: '[local]',
111
130
  cssUniqueness: false,
112
- selectorReplace: null
131
+ selectorReplace: null,
132
+ postCssPluginOrder
113
133
  })
114
134
  } : null, {
115
135
  test: seperateCssModules ? /\.module\.css$/ : /(\.module)?\.css$/,
@@ -124,7 +144,8 @@ module.exports = {
124
144
  cssUniqueness,
125
145
  selectorReplace,
126
146
  cssHashSelectors,
127
- classNamePrefix
147
+ classNamePrefix,
148
+ postCssPluginOrder
128
149
  })
129
150
  }, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), {
130
151
  test: /\.tmpl$/,
@@ -28,7 +28,8 @@ const {
28
28
  selectorWeightConfig,
29
29
  cssHashSelectors,
30
30
  classNamePrefix,
31
- selectorReplace
31
+ selectorReplace,
32
+ postCssPluginOrder
32
33
  },
33
34
  app: {
34
35
  folder
@@ -36,6 +37,23 @@ const {
36
37
  } = options;
37
38
  const appPath = process.cwd();
38
39
  const nameTemplate = (0, _configsAssetsLoaders.createNameTemplate)(enableChunkHash);
40
+ let docsExclude = [];
41
+ Object.keys(options.docs.exclude).forEach(key => {
42
+ if (options.docs.exclude[key].length > 0) {
43
+ docsExclude.push(key);
44
+ }
45
+ });
46
+
47
+ if (docsExclude.length > 0) {
48
+ // eslint-disable-next-line no-console
49
+ console.log('\x1b[33m%s\x1b[0m', '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n ');
50
+ docsExclude.forEach(exclude => {
51
+ // eslint-disable-next-line no-console
52
+ console.log('\x1b[33m%s\x1b[0m', `Please move " react-cli > docs > exclude > ${exclude} " to " react-cli > docs > patterns > ${exclude} " following the new pattern feature \n`);
53
+ }); // eslint-disable-next-line no-console
54
+
55
+ console.log('\x1b[33m%s\x1b[0m', '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n ');
56
+ }
39
57
 
40
58
  module.exports = isSSTest => ({
41
59
  entry: {
@@ -85,9 +103,10 @@ module.exports = isSSTest => ({
85
103
  selectorWeightConfig,
86
104
  classNameBlob: false,
87
105
  cssUniqueness,
88
- selectorReplace: null,
106
+ selectorReplace,
89
107
  cssHashSelectors,
90
- classNamePrefix
108
+ classNamePrefix,
109
+ postCssPluginOrder
91
110
  })
92
111
  }, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), {
93
112
  test: /\.html$/,
@@ -27,7 +27,8 @@ const {
27
27
  selectorWeightConfig,
28
28
  cssHashSelectors,
29
29
  enableChunkHash,
30
- classNamePrefix
30
+ classNamePrefix,
31
+ postCssPluginOrder
31
32
  },
32
33
  app: {
33
34
  folder
@@ -86,7 +87,8 @@ module.exports = {
86
87
  cssUniqueness,
87
88
  selectorReplace: null,
88
89
  cssHashSelectors,
89
- classNamePrefix
90
+ classNamePrefix,
91
+ postCssPluginOrder
90
92
  })
91
93
  }, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), {
92
94
  test: /\.html$/,