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

Sign up to get free protection for your applications and to get access to all the features.
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;