@zohodesk/react-cli 0.0.1-beta.98 → 0.0.1-betaa.138.1

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 (139) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +149 -0
  3. package/bin/cli.js +34 -29
  4. package/files/eslintrc.js +57 -0
  5. package/files/prettierrc.js +3 -0
  6. package/lib/babel/cmjs-plugins-presets.js +16 -9
  7. package/lib/babel/es-plugins-presets.js +26 -14
  8. package/lib/common/getEntries.js +31 -22
  9. package/lib/common/getPublicPathConfig.js +27 -13
  10. package/lib/common/index.js +21 -25
  11. package/lib/common/splitChunks.js +62 -53
  12. package/lib/common/templateParameters.js +10 -8
  13. package/lib/configs/jest.config.js +15 -25
  14. package/lib/configs/webpack.component.umd.config.js +31 -37
  15. package/lib/configs/webpack.css.umd.config.js +44 -47
  16. package/lib/configs/webpack.dev.config.js +70 -52
  17. package/lib/configs/webpack.docs.config.js +106 -106
  18. package/lib/configs/webpack.prod.config.js +95 -75
  19. package/lib/hooks/docsProptypeHook.js +32 -38
  20. package/lib/jest/commitedFilesResult.js +103 -74
  21. package/lib/jest/coverageCollector.js +41 -21
  22. package/lib/jest/jsonMaker.js +15 -16
  23. package/lib/jest/preProcessors/cssPreprocessor.js +16 -18
  24. package/lib/jest/preProcessors/jsPreprocessor.js +3 -5
  25. package/lib/jest/preProcessors/otherFilesPreprocessor.js +5 -6
  26. package/lib/jest/result.js +90 -45
  27. package/lib/jest/run.js +43 -43
  28. package/lib/jest/setup.js +102 -95
  29. package/lib/loaderUtils/getCSSLoaders.js +21 -22
  30. package/lib/loaderUtils/getDevJsLoaders.js +25 -23
  31. package/lib/loaderUtils/index.js +11 -13
  32. package/lib/loaders/docsLoader.js +15 -15
  33. package/lib/loaders/docsPropsLoader.js +14 -17
  34. package/lib/loaders/fileLoader.js +33 -35
  35. package/lib/loaders/scriptInstrumentLoader.js +21 -20
  36. package/lib/loaders/workerLoader.js +136 -0
  37. package/lib/middlewares/HMRMiddleware.js +54 -45
  38. package/lib/middlewares/SSTMiddleware.js +8 -5
  39. package/lib/pluginUtils/getDevPlugins.js +114 -52
  40. package/lib/pluginUtils/getDocsPlugins.js +25 -29
  41. package/lib/pluginUtils/getLibraryPlugins.js +8 -10
  42. package/lib/pluginUtils/getProdPlugins.js +163 -74
  43. package/lib/pluginUtils/getServerPlugins.js +8 -11
  44. package/lib/pluginUtils/getUMDCSSPlugins.js +11 -15
  45. package/lib/pluginUtils/getUMDComponentPlugins.js +11 -15
  46. package/lib/pluginUtils/index.js +36 -43
  47. package/lib/plugins/CdnChangePlugin.js +63 -0
  48. package/lib/plugins/CleanupStatsPlugin.js +18 -32
  49. package/lib/plugins/CustomAttributePlugin.js +79 -0
  50. package/lib/plugins/CustomAttributePlugin.md +35 -0
  51. package/lib/plugins/EFCPlugin.js +185 -0
  52. package/lib/plugins/I18NInjectIntoIndexPlugin.js +118 -52
  53. package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +60 -0
  54. package/lib/plugins/I18nSplitPlugin/I18nDependency.js +44 -0
  55. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +266 -0
  56. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +183 -0
  57. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +100 -0
  58. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +86 -0
  59. package/lib/plugins/I18nSplitPlugin/README.md +25 -0
  60. package/lib/plugins/I18nSplitPlugin/index.js +185 -0
  61. package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +64 -0
  62. package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +13 -0
  63. package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +26 -0
  64. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +40 -0
  65. package/lib/plugins/I18nSplitPlugin/utils/index.js +31 -0
  66. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +112 -0
  67. package/lib/plugins/ManifestPlugin.js +52 -63
  68. package/lib/plugins/ModuleStatsPlugin.js +83 -173
  69. package/lib/plugins/OptimizeJSPlugin.js +24 -41
  70. package/lib/plugins/PublicPathCallbackPlugin.js +42 -116
  71. package/lib/plugins/PublicPathChangePlugin.js +175 -284
  72. package/lib/plugins/ReportGeneratePlugin.js +150 -151
  73. package/lib/plugins/ResourceHintsPlugin.js +53 -35
  74. package/lib/plugins/ScriptInstrumentPlugin.js +22 -37
  75. package/lib/plugins/ServiceWorkerPlugin.js +81 -57
  76. package/lib/plugins/ShadowDOMSupportPlugin.js +153 -234
  77. package/lib/plugins/SourceMapHookPlugin.js +21 -33
  78. package/lib/plugins/TPHashMappingPlugin.js +67 -0
  79. package/lib/plugins/UglifyCSSPlugin.js +23 -30
  80. package/lib/plugins/UnusedFilesFindPlugin.js +137 -152
  81. package/lib/plugins/index.js +100 -91
  82. package/lib/plugins/webpackwatchrunplugin.js +18 -30
  83. package/lib/postcss-plugins/ExcludeRTLPlugin.js +14 -17
  84. package/lib/schemas/index.js +336 -81
  85. package/lib/servers/clusterHubServer.js +22 -26
  86. package/lib/servers/docsServer.js +3 -5
  87. package/lib/servers/docsServerCore.js +84 -91
  88. package/lib/servers/helpServer.js +19 -21
  89. package/lib/servers/impactServer.js +99 -92
  90. package/lib/servers/mockserver.js +24 -24
  91. package/lib/servers/scrServer.js +78 -98
  92. package/lib/servers/server.js +101 -122
  93. package/lib/servers/ssServer.js +63 -61
  94. package/lib/sh/reportPublish.sh +1 -2
  95. package/lib/templates/CoverageScriptTemplate.js +45 -18
  96. package/lib/templates/WMSTemplate.js +17 -18
  97. package/lib/templates/linterConstant.js +6 -4
  98. package/lib/utils/babelPresets.js +12 -5
  99. package/lib/utils/clean.js +12 -11
  100. package/lib/utils/copy.js +12 -34
  101. package/lib/utils/copyTimezones.js +9 -16
  102. package/lib/utils/createEventStream.js +24 -19
  103. package/lib/utils/cssClassNameGenerate.js +44 -73
  104. package/lib/utils/cssURLReplacer.js +62 -56
  105. package/lib/utils/dependencyPostPublish.js +20 -19
  106. package/lib/utils/fileUtils.js +66 -54
  107. package/lib/utils/folderIterator.js +20 -21
  108. package/lib/utils/getComponents.js +70 -27
  109. package/lib/utils/getCurrentBranch.js +11 -17
  110. package/lib/utils/getDependenciesImpactList.js +114 -187
  111. package/lib/utils/getHash.js +9 -13
  112. package/lib/utils/getIp.js +9 -9
  113. package/lib/utils/getOptions.js +26 -29
  114. package/lib/utils/getServerURL.js +19 -10
  115. package/lib/utils/index.js +147 -126
  116. package/lib/utils/init.js +2 -2
  117. package/lib/utils/initPreCommitHook.js +40 -32
  118. package/lib/utils/jsonHelper.js +37 -21
  119. package/lib/utils/lint/addScripts.js +27 -0
  120. package/lib/utils/lint/checkExistingConfig.js +67 -0
  121. package/lib/utils/lint/copyConfigs.js +24 -0
  122. package/lib/utils/lint/index.js +54 -0
  123. package/lib/utils/lint/lintScripts.js +11 -0
  124. package/lib/utils/lint/lintSetup.js +31 -0
  125. package/lib/utils/lint/lintStagedPreCommitHook.js +7 -0
  126. package/lib/utils/lint/question.js +30 -0
  127. package/lib/utils/lintReporter.js +70 -56
  128. package/lib/utils/mailSender.js +12 -27
  129. package/lib/utils/pullOrigin.js +21 -18
  130. package/lib/utils/reinstallDependencies.js +76 -85
  131. package/lib/utils/removeAttributes.js +25 -23
  132. package/lib/utils/repoClone.js +47 -45
  133. package/lib/utils/request.js +64 -77
  134. package/lib/utils/rtl.js +22 -29
  135. package/lib/utils/setEnvVariables.js +5 -6
  136. package/lib/utils/ssTestHack.js +21 -19
  137. package/lib/utils/switchBranch.js +21 -20
  138. package/lib/utils/urlConcat.js +22 -0
  139. package/package.json +72 -67
@@ -1,74 +1,78 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _path = require('path');
8
+ var _path = _interopRequireDefault(require("path"));
8
9
 
9
- var _path2 = _interopRequireDefault(_path);
10
+ var _fs = _interopRequireDefault(require("fs"));
10
11
 
11
- var _webpack = require('webpack');
12
+ var _webpack = _interopRequireDefault(require("webpack"));
12
13
 
13
- var _webpack2 = _interopRequireDefault(_webpack);
14
+ var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
14
15
 
15
- var _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
16
+ var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
16
17
 
17
- var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
18
+ var _lodashWebpackPlugin = _interopRequireDefault(require("lodash-webpack-plugin"));
18
19
 
19
- var _webpackBundleAnalyzer = require('webpack-bundle-analyzer');
20
+ var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin"));
20
21
 
21
- var _lodashWebpackPlugin = require('lodash-webpack-plugin');
22
+ var _I18nSplitPlugin = _interopRequireDefault(require("../plugins/I18nSplitPlugin"));
22
23
 
23
- var _lodashWebpackPlugin2 = _interopRequireDefault(_lodashWebpackPlugin);
24
+ var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
24
25
 
25
- var _miniCssExtractPlugin = require('mini-css-extract-plugin');
26
+ var _copyWebpackPlugin = _interopRequireDefault(require("copy-webpack-plugin"));
26
27
 
27
- var _miniCssExtractPlugin2 = _interopRequireDefault(_miniCssExtractPlugin);
28
+ var _plugins = require("../plugins");
28
29
 
29
- var _htmlWebpackPlugin = require('html-webpack-plugin');
30
+ var _common = require("../common");
30
31
 
31
- var _htmlWebpackPlugin2 = _interopRequireDefault(_htmlWebpackPlugin);
32
-
33
- var _copyWebpackPlugin = require('copy-webpack-plugin');
34
-
35
- var _copyWebpackPlugin2 = _interopRequireDefault(_copyWebpackPlugin);
36
-
37
- var _plugins = require('../plugins');
38
-
39
- var _common = require('../common');
32
+ var _CustomAttributePlugin = require("../plugins/CustomAttributePlugin");
40
33
 
41
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42
35
 
43
- var getProdPlugins = function getProdPlugins(options) {
44
- var publicPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
45
- var _options$app = options.app,
46
- enableChunkHash = _options$app.enableChunkHash,
47
- manifestFileName = _options$app.manifestFileName,
48
- bundleAnalyze = _options$app.bundleAnalyze,
49
- optimize = _options$app.optimize,
50
- publicPaths = _options$app.publicPaths,
51
- enableSMapHook = _options$app.enableSMapHook,
52
- folder = _options$app.folder,
53
- outputFolder = _options$app.outputFolder,
54
- context = _options$app.context,
55
- hasEFC = _options$app.hasEFC,
56
- enableSMap = _options$app.enableSMap,
57
- mode = _options$app.server.mode,
58
- hasShadowDOM = _options$app.hasShadowDOM,
59
- resourceHints = _options$app.resourceHints,
60
- serviceWorker = _options$app.serviceWorker,
61
- inject = _options$app.htmlTemplate.inject;
62
-
63
-
64
- var isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
36
+ // eslint-disable-next-line no-unused-vars
37
+ let getProdPlugins = (options, publicPath = '') => {
38
+ let {
39
+ enableChunkHash,
40
+ manifestFileName,
41
+ bundleAnalyze,
42
+ optimize,
43
+ publicPaths,
44
+ hasEFC: prevOptionForEnableEFC,
45
+ enableSMapHook,
46
+ tpFolder,
47
+ folder,
48
+ outputFolder,
49
+ context,
50
+ enableSMap,
51
+ server: {
52
+ mode
53
+ },
54
+ hasShadowDOM,
55
+ resourceHints,
56
+ serviceWorker,
57
+ htmlTemplate: {
58
+ inject
59
+ },
60
+ customAttributes,
61
+ tpHashMapping,
62
+ cdnMapping
63
+ } = options.app;
64
+ const {
65
+ i18n
66
+ } = options;
67
+ const {
68
+ hasEFC: newOptionForEnableEFC,
69
+ nameScope: efcNameSpace,
70
+ localeAttr: efcLocaleAttr
71
+ } = options.efc;
72
+ const hasEFC = newOptionForEnableEFC || prevOptionForEnableEFC;
73
+ let isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
65
74
  enableChunkHash = !isDevelopment && enableChunkHash;
66
-
67
- var plugins = [new _caseSensitivePathsWebpackPlugin2.default(), new _copyWebpackPlugin2.default([{
68
- from: _path2.default.join(process.cwd(), context, 'i18n') + '/',
69
- to: enableChunkHash ? './i18n/[name].[hash:20]_.[ext]' : './i18n/[name]_.[ext]',
70
- toType: 'template'
71
- }]), new _webpack2.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack2.default.DefinePlugin({
75
+ let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack.default.DefinePlugin({
72
76
  __TEST__: false,
73
77
  __DEVELOPMENT__: false,
74
78
  __LOCAL_PRODUCTION__: isDevelopment,
@@ -77,44 +81,119 @@ var getProdPlugins = function getProdPlugins(options) {
77
81
  NODE_ENV: JSON.stringify('production')
78
82
  },
79
83
  __SERVER__: false
80
- }), new _miniCssExtractPlugin2.default({
84
+ }), new _miniCssExtractPlugin.default({
81
85
  filename: enableChunkHash ? './css/[name].[chunkhash:20]_.css' : './css/[name]_.css',
82
- chunkFilename: enableChunkHash ? './css/[name].[chunkhash:20]_.css' : './css/[name]_.css'
86
+ chunkFilename: enableChunkHash ? './css/[name].[chunkhash:20]_.css' : './css/[name]_.css',
87
+ ignoreOrder: true
83
88
  }), new _plugins.ResourceHintsPlugin(), new _plugins.UglifyCSSPlugin()];
89
+ const i18nManifestFileName = 'i18n-manifest.json';
90
+ /**
91
+ * NOTE:
92
+ * this file name ext .i18n.js added
93
+ * Because, in service worker they maintain cache as file name based
94
+ * So, to make differce we added .i18n.js ext.
95
+ */
96
+
97
+ const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name].[chunkhash].i18n.js';
98
+ const i18nPublicPath = Array.isArray(publicPaths) && !cdnMapping.isCdnEnabled ? publicPaths['4'] : ''; // const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name].[contentHash]_.js';
99
+ // const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name]_.js';
100
+
101
+ if (i18n.chunkSplitEnable) {
102
+ plugins.push(new _I18nSplitPlugin.default({
103
+ jsResource: i18n.jsResource,
104
+ localeVarName: i18n.localeVarName,
105
+ jsonpFunc: i18n.jsonpFunc,
106
+ disableDefault: i18n.disableDefault,
107
+ publicPath: i18nPublicPath,
108
+ i18nManifestFileName,
109
+ // template: (object, locale) => `window.loadI18n(${JSON.stringify(object)}, ${JSON.stringify(locale)})`,
110
+ filenameTemplate: i18nFileNameTemplate,
111
+ propertiesFolder: i18n.propertiesFolder
112
+ }));
113
+ } else {
114
+ plugins.push(new _copyWebpackPlugin.default({
115
+ patterns: [{
116
+ from: `${_path.default.join(process.cwd(), context, 'i18n')}/`,
117
+ to: enableChunkHash ? './i18n/[name].[hash:20]_.[ext]' : './i18n/[name]_.[ext]',
118
+ toType: 'template'
119
+ }]
120
+ }));
121
+ }
122
+
123
+ tpFolder && plugins.push(new _copyWebpackPlugin.default({
124
+ patterns: [{
125
+ from: `${_path.default.join(process.cwd(), context, tpFolder)}/`,
126
+ to: `./${tpFolder}/`,
127
+ toType: 'dir'
128
+ }]
129
+ }));
130
+
84
131
  if (hasEFC) {
85
- plugins.push(new _htmlWebpackPlugin2.default({
132
+ plugins.push(new _htmlWebpackPlugin.default({
86
133
  chunksSortMode: 'none',
87
134
  filename: enableChunkHash ? 'index.[templatehash:20].html' : 'index.html',
88
- template: _path2.default.join(process.cwd(), folder, 'index.html'),
135
+ template: _path.default.join(process.cwd(), folder, 'index.html'),
89
136
  excludeChunks: ['efc', 'widget'],
90
137
  minify: false,
91
138
  templateParameters: _common.templateParameters,
92
139
  scriptLoading: 'defer',
93
140
  inject: inject
94
141
  }));
142
+ plugins.push(new _plugins.EFCPlugin({
143
+ isDevelopment,
144
+ serverUrl: publicPath,
145
+ i18nFileNameTemplate,
146
+ i18nManifestFileName,
147
+ entryPointName: 'efc',
148
+ // outputFile: 'zohodesk-efc-sdk-latest.js',
149
+ nameScope: efcNameSpace,
150
+ localeAttr: efcLocaleAttr,
151
+ cdnVariableName: cdnMapping.isCdnEnabled ? cdnMapping.variableName : null
152
+ }));
95
153
  } else {
96
- plugins.push(new _htmlWebpackPlugin2.default({
154
+ plugins.push(new _htmlWebpackPlugin.default({
97
155
  chunksSortMode: 'none',
98
156
  filename: enableChunkHash ? 'index.[templatehash:20].html' : 'index.html',
99
- template: _path2.default.join(process.cwd(), folder, 'index.html'),
157
+ template: _path.default.join(process.cwd(), folder, 'index.html'),
100
158
  minify: false,
101
159
  templateParameters: _common.templateParameters,
102
160
  scriptLoading: 'defer',
103
161
  inject: inject
104
162
  }));
105
163
  }
106
- plugins.push(new _plugins.I18NInjectIntoIndexPlugin({ publicPath: publicPath, mode: mode }));
107
- if (publicPaths && !isDevelopment) {
108
- var callback = publicPaths.callback;
109
164
 
110
- plugins.push(callback ? new _plugins.PublicPathCallbackPlugin({ callback: callback }) : new _plugins.PublicPathChangePlugin({ publicPaths: publicPaths, resourceHints: resourceHints }));
165
+ plugins.push(new _plugins.I18NInjectIntoIndexPlugin({
166
+ // Because we will handle cdn url in CdnChangePlugin
167
+ publicPath: cdnMapping.isCdnEnabled ? '' : i18nPublicPath,
168
+ isDevelopment,
169
+ templateLabel: i18n.templateLabel || '{{--user-locale}}',
170
+ i18nFileNameTemplate,
171
+ i18nManifestFileName,
172
+ mainChunkName: 'main'
173
+ }));
174
+
175
+ if (publicPaths && !isDevelopment && !cdnMapping.isCdnEnabled) {
176
+ let {
177
+ callback
178
+ } = publicPaths;
179
+ plugins.push(callback ? new _plugins.PublicPathCallbackPlugin({
180
+ callback
181
+ }) : new _plugins.PublicPathChangePlugin({
182
+ publicPaths,
183
+ resourceHints
184
+ }));
111
185
  }
112
186
 
113
- plugins.push(new _lodashWebpackPlugin2.default({
187
+ if (cdnMapping.isCdnEnabled) {
188
+ plugins.push(new _plugins.CdnChangePlugin(cdnMapping));
189
+ }
190
+
191
+ plugins.push(new _lodashWebpackPlugin.default({
114
192
  collections: true,
115
193
  shorthands: true
116
194
  }));
117
195
  hasShadowDOM && plugins.push(new _plugins.ShadowDOMSupportPlugin());
196
+
118
197
  if (!isDevelopment) {
119
198
  enableSMap && enableSMapHook && plugins.push(new _plugins.SourceMapHookPlugin());
120
199
  optimize && plugins.push(new _plugins.OptimizeJSPlugin());
@@ -126,6 +205,7 @@ var getProdPlugins = function getProdPlugins(options) {
126
205
  plugins.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin({
127
206
  analyzerMode: 'static',
128
207
  generateStatsFile: true,
208
+ openAnalyzer: false,
129
209
  statsOptions: {
130
210
  source: false,
131
211
  normal: true,
@@ -135,33 +215,42 @@ var getProdPlugins = function getProdPlugins(options) {
135
215
  assets: true,
136
216
  assetsSort: 'name'
137
217
  }
218
+ })); // plugins.push(new ReportGeneratePlugin());
219
+ }
220
+
221
+ if (tpHashMapping && tpHashMapping.length > 0) {
222
+ plugins.push(new _plugins.TPHashMappingPlugin({
223
+ fileMappings: tpHashMapping,
224
+ tpFolder: `${_path.default.join(process.cwd(), context, tpFolder)}/`
138
225
  }));
139
- // plugins.push(new ReportGeneratePlugin());
140
226
  }
141
227
  }
142
228
 
143
229
  if (!isDevelopment && serviceWorker.enableSw) {
144
- var filePath = serviceWorker.filePath,
145
- _serviceWorker$fileNa = serviceWorker.fileName,
146
- fileName = _serviceWorker$fileNa === undefined ? 'sw.js' : _serviceWorker$fileNa,
147
- _serviceWorker$exitPa = serviceWorker.exitPath,
148
- exitPath = _serviceWorker$exitPa === undefined ? '/' : _serviceWorker$exitPa,
149
- _serviceWorker$replac = serviceWorker.replaceText,
150
- replaceText = _serviceWorker$replac === undefined ? '@@' : _serviceWorker$replac;
230
+ let {
231
+ filePath,
232
+ fileName = 'sw.js',
233
+ exitPath = '/',
234
+ replaceText = '@@'
235
+ } = serviceWorker;
151
236
 
152
237
  if (!filePath) {
153
238
  throw new Error('File Path required for service worker plugin');
154
239
  }
240
+
155
241
  plugins.push(new _plugins.ServiceWorkerPlugin({
156
- filePath: _path2.default.join(process.cwd(), filePath),
242
+ filePath: _path.default.join(process.cwd(), filePath),
243
+ i18nFileNameTemplate,
157
244
  fileName: fileName,
158
- exitPath: _path2.default.join(outputFolder, exitPath),
159
- replaceText: replaceText,
160
- publicPaths: publicPaths
245
+ exitPath: _path.default.join(outputFolder, exitPath),
246
+ replaceText,
247
+ publicPaths
161
248
  }));
162
249
  }
163
250
 
251
+ customAttributes.enable && plugins.push(new _CustomAttributePlugin.CustomAttributePlugin(customAttributes));
164
252
  return plugins;
165
253
  };
166
254
 
167
- exports.default = getProdPlugins;
255
+ var _default = getProdPlugins;
256
+ exports.default = _default;
@@ -1,28 +1,25 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _webpack = require('webpack');
8
+ var _webpack = _interopRequireDefault(require("webpack"));
8
9
 
9
- var _webpack2 = _interopRequireDefault(_webpack);
10
-
11
- var _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
12
-
13
- var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
10
+ var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
14
11
 
15
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
13
 
17
- var getProdPlugins = function getProdPlugins() {
18
- var plugins = [new _webpack2.default.optimize.ModuleConcatenationPlugin(), new _caseSensitivePathsWebpackPlugin2.default(), new _webpack2.default.IgnorePlugin(/^\.\/domain$/, /moment$/), new _webpack2.default.DefinePlugin({
14
+ let getProdPlugins = () => {
15
+ let plugins = [new _webpack.default.optimize.ModuleConcatenationPlugin(), new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.IgnorePlugin(/^\.\/domain$/, /moment$/), new _webpack.default.DefinePlugin({
19
16
  __TEST__: false,
20
17
  __DEVELOPMENT__: true,
21
18
  __DOCS__: false,
22
19
  __SERVER__: true
23
20
  })];
24
-
25
21
  return plugins;
26
22
  };
27
23
 
28
- exports.default = getProdPlugins;
24
+ var _default = getProdPlugins;
25
+ exports.default = _default;
@@ -1,27 +1,22 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
8
+ var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
8
9
 
9
- var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
10
+ var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin"));
10
11
 
11
- var _miniCssExtractPlugin = require('mini-css-extract-plugin');
12
+ var _plugins = require("../plugins");
12
13
 
13
- var _miniCssExtractPlugin2 = _interopRequireDefault(_miniCssExtractPlugin);
14
-
15
- var _plugins = require('../plugins');
16
-
17
- var _webpack = require('webpack');
18
-
19
- var _webpack2 = _interopRequireDefault(_webpack);
14
+ var _webpack = _interopRequireDefault(require("webpack"));
20
15
 
21
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
17
 
23
- var getUMDCSSPlugins = function getUMDCSSPlugins() {
24
- var plugins = [new _caseSensitivePathsWebpackPlugin2.default(), new _webpack2.default.DefinePlugin({
18
+ let getUMDCSSPlugins = () => {
19
+ let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.DefinePlugin({
25
20
  __TEST__: false,
26
21
  __DEVELOPMENT__: false,
27
22
  __DOCS__: false,
@@ -29,11 +24,12 @@ var getUMDCSSPlugins = function getUMDCSSPlugins() {
29
24
  NODE_ENV: JSON.stringify('production')
30
25
  },
31
26
  __SERVER__: false
32
- }), new _miniCssExtractPlugin2.default({
27
+ }), new _miniCssExtractPlugin.default({
33
28
  filename: 'css/[name].css',
34
29
  chunkFilename: 'css/[id].css'
35
30
  }), new _plugins.UglifyCSSPlugin()];
36
31
  return plugins;
37
32
  };
38
33
 
39
- exports.default = getUMDCSSPlugins;
34
+ var _default = getUMDCSSPlugins;
35
+ exports.default = _default;
@@ -1,27 +1,22 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
8
+ var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
8
9
 
9
- var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
10
+ var _webpack = _interopRequireDefault(require("webpack"));
10
11
 
11
- var _webpack = require('webpack');
12
+ var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin"));
12
13
 
13
- var _webpack2 = _interopRequireDefault(_webpack);
14
-
15
- var _miniCssExtractPlugin = require('mini-css-extract-plugin');
16
-
17
- var _miniCssExtractPlugin2 = _interopRequireDefault(_miniCssExtractPlugin);
18
-
19
- var _plugins = require('../plugins');
14
+ var _plugins = require("../plugins");
20
15
 
21
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
17
 
23
- var getUMDComponentPlugins = function getUMDComponentPlugins(isDocs) {
24
- var plugins = [new _caseSensitivePathsWebpackPlugin2.default(), new _webpack2.default.DefinePlugin({
18
+ let getUMDComponentPlugins = isDocs => {
19
+ let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.DefinePlugin({
25
20
  __TEST__: false,
26
21
  __DEVELOPMENT__: false,
27
22
  __DOCS__: isDocs ? true : false,
@@ -29,11 +24,12 @@ var getUMDComponentPlugins = function getUMDComponentPlugins(isDocs) {
29
24
  NODE_ENV: JSON.stringify('production')
30
25
  },
31
26
  __SERVER__: false
32
- }), new _miniCssExtractPlugin2.default({
27
+ }), new _miniCssExtractPlugin.default({
33
28
  filename: 'css/[name].css',
34
29
  chunkFilename: 'css/[name].css'
35
30
  }), new _plugins.UglifyCSSPlugin()];
36
31
  return plugins;
37
32
  };
38
33
 
39
- exports.default = getUMDComponentPlugins;
34
+ var _default = getUMDComponentPlugins;
35
+ exports.default = _default;
@@ -1,70 +1,63 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
- var _getDevPlugins = require('./getDevPlugins');
8
-
9
- Object.defineProperty(exports, 'getDevPlugins', {
6
+ Object.defineProperty(exports, "getDevPlugins", {
10
7
  enumerable: true,
11
- get: function get() {
12
- return _interopRequireDefault(_getDevPlugins).default;
8
+ get: function () {
9
+ return _getDevPlugins.default;
13
10
  }
14
11
  });
15
-
16
- var _getProdPlugins = require('./getProdPlugins');
17
-
18
- Object.defineProperty(exports, 'getProdPlugins', {
12
+ Object.defineProperty(exports, "getDocsPlugins", {
19
13
  enumerable: true,
20
- get: function get() {
21
- return _interopRequireDefault(_getProdPlugins).default;
14
+ get: function () {
15
+ return _getDocsPlugins.default;
22
16
  }
23
17
  });
24
-
25
- var _getDocsPlugins = require('./getDocsPlugins');
26
-
27
- Object.defineProperty(exports, 'getDocsPlugins', {
18
+ Object.defineProperty(exports, "getLibraryPlugins", {
28
19
  enumerable: true,
29
- get: function get() {
30
- return _interopRequireDefault(_getDocsPlugins).default;
20
+ get: function () {
21
+ return _getLibraryPlugins.default;
31
22
  }
32
23
  });
33
-
34
- var _getServerPlugins = require('./getServerPlugins');
35
-
36
- Object.defineProperty(exports, 'getServerPlugins', {
24
+ Object.defineProperty(exports, "getProdPlugins", {
37
25
  enumerable: true,
38
- get: function get() {
39
- return _interopRequireDefault(_getServerPlugins).default;
26
+ get: function () {
27
+ return _getProdPlugins.default;
40
28
  }
41
29
  });
42
-
43
- var _getLibraryPlugins = require('./getLibraryPlugins');
44
-
45
- Object.defineProperty(exports, 'getLibraryPlugins', {
30
+ Object.defineProperty(exports, "getServerPlugins", {
46
31
  enumerable: true,
47
- get: function get() {
48
- return _interopRequireDefault(_getLibraryPlugins).default;
32
+ get: function () {
33
+ return _getServerPlugins.default;
49
34
  }
50
35
  });
51
-
52
- var _getUMDComponentPlugins = require('./getUMDComponentPlugins');
53
-
54
- Object.defineProperty(exports, 'getUMDComponentPlugins', {
36
+ Object.defineProperty(exports, "getUMDCSSPlugins", {
55
37
  enumerable: true,
56
- get: function get() {
57
- return _interopRequireDefault(_getUMDComponentPlugins).default;
38
+ get: function () {
39
+ return _getUMDCSSPlugins.default;
58
40
  }
59
41
  });
60
-
61
- var _getUMDCSSPlugins = require('./getUMDCSSPlugins');
62
-
63
- Object.defineProperty(exports, 'getUMDCSSPlugins', {
42
+ Object.defineProperty(exports, "getUMDComponentPlugins", {
64
43
  enumerable: true,
65
- get: function get() {
66
- return _interopRequireDefault(_getUMDCSSPlugins).default;
44
+ get: function () {
45
+ return _getUMDComponentPlugins.default;
67
46
  }
68
47
  });
69
48
 
49
+ var _getDevPlugins = _interopRequireDefault(require("./getDevPlugins"));
50
+
51
+ var _getProdPlugins = _interopRequireDefault(require("./getProdPlugins"));
52
+
53
+ var _getDocsPlugins = _interopRequireDefault(require("./getDocsPlugins"));
54
+
55
+ var _getServerPlugins = _interopRequireDefault(require("./getServerPlugins"));
56
+
57
+ var _getLibraryPlugins = _interopRequireDefault(require("./getLibraryPlugins"));
58
+
59
+ var _getUMDComponentPlugins = _interopRequireDefault(require("./getUMDComponentPlugins"));
60
+
61
+ var _getUMDCSSPlugins = _interopRequireDefault(require("./getUMDCSSPlugins"));
62
+
70
63
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const MODULE_TYPE = 'css/mini-extract';
13
+
14
+ const isI18nFile = url => url.endsWith(".i18n.js");
15
+
16
+ class CdnChangePlugin {
17
+ constructor(options) {
18
+ this.i18nTemplate = options.i18nTemplate || '{{__I18N_CDN__}}';
19
+ this.variableName = options.variableName || '__CSS_CDN__';
20
+ this.cssTemplate = options.cssTemplate || '{{__CSS_CDN__}}';
21
+ this.jsTemplate = options.jsTemplate || '{{__JS_CDN__}}';
22
+ }
23
+
24
+ getCssChunkObject(mainChunk) {
25
+ const obj = {};
26
+
27
+ for (const chunk of mainChunk.getAllAsyncChunks()) {
28
+ for (const module of chunk.modulesIterable) {
29
+ if (module.type === MODULE_TYPE) {
30
+ obj[chunk.id] = 1;
31
+ break;
32
+ }
33
+ }
34
+ }
35
+
36
+ return obj;
37
+ }
38
+
39
+ apply(compiler) {
40
+ compiler.hooks.thisCompilation.tap('CdnChangePlugin', compilation => {
41
+ compilation.mainTemplate.hooks.requireEnsure.tap('CdnChangePlugin', (source, chunk) => {
42
+ const chunkMap = this.getCssChunkObject(chunk);
43
+
44
+ if (Object.keys(chunkMap).length > 0) {
45
+ return source.replace('__webpack_require__.p', `window['${this.variableName}']`);
46
+ }
47
+ });
48
+ });
49
+ compiler.hooks.make.tap('CdnChangePlugin', compilation => {
50
+ _htmlWebpackPlugin.default.getHooks(compilation).beforeAssetTagGeneration.tapAsync('CdnChangePlugin', (data, cb) => {
51
+ data.assets = Object.assign({}, data.assets, {
52
+ css: data.assets.css.map(css => `${this.cssTemplate}${css}`),
53
+ js: data.assets.js.map(js => `${isI18nFile(js) ? this.i18nTemplate : this.jsTemplate}${js}`)
54
+ });
55
+ cb(null, data);
56
+ });
57
+ });
58
+ }
59
+
60
+ }
61
+
62
+ var _default = CdnChangePlugin;
63
+ exports.default = _default;