@zohodesk/react-cli 0.0.1-exp.169.1 → 0.0.1-exp.175.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. package/.eslintrc.js +1 -0
  2. package/{CHANGELOG.md → CHANGELOG-fz.md} +0 -0
  3. package/Changelog.md +1019 -0
  4. package/README.md +17 -936
  5. package/docs/VariableConversion.md +678 -0
  6. package/lib/configs/jest.config.js +8 -10
  7. package/lib/configs/libAlias.js +10 -3
  8. package/lib/configs/resolvers.js +38 -0
  9. package/lib/configs/webpack.dev.config.js +19 -26
  10. package/lib/configs/webpack.docs.config.js +12 -19
  11. package/lib/configs/webpack.impact.config.js +13 -15
  12. package/lib/configs/webpack.prod.config.js +24 -28
  13. package/lib/constants.js +31 -0
  14. package/lib/jest/preProcessors/cssPreprocessor.js +14 -7
  15. package/lib/loaderUtils/getCSSLoaders.js +45 -8
  16. package/lib/pluginUtils/configHtmlWebpackPlugins.js +59 -0
  17. package/lib/pluginUtils/getDevPlugins.js +14 -34
  18. package/lib/pluginUtils/getProdPlugins.js +24 -42
  19. package/lib/postcss-plugins/{ExcludeRTLPlugin.js → ExcludePlugin.js} +1 -1
  20. package/lib/postcss-plugins/hoverActivePlugin.js +51 -27
  21. package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +37 -0
  22. package/lib/postcss-plugins/variableModificationPlugin/index.js +248 -0
  23. package/lib/postcss-plugins/variableModifier.js +244 -0
  24. package/lib/schemas/index.js +50 -10
  25. package/lib/servers/docsServerCore.js +13 -12
  26. package/lib/servers/getCliPath.js +1 -1
  27. package/lib/servers/httpsOptions.js +40 -9
  28. package/lib/servers/nowatchserver.js +12 -11
  29. package/lib/servers/server.js +14 -13
  30. package/lib/utils/getOptions.js +42 -14
  31. package/package.json +5 -34
  32. package/postpublish.js +6 -4
  33. package/templates/docs/css/style.css +1 -1
  34. package/templates/docs/index.html +9 -1
  35. package/cert/Tsicsezwild-22-23.crt +0 -37
  36. package/cert/Tsicsezwild-22-23.key +0 -27
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.libAlias = void 0;
6
+ exports.libAlias = exports.jestModuleNameMapper = void 0;
7
7
  // the reason for alias at the time was code tree shaking
8
8
  // tree shaking was most compactable with ES module system
9
9
  // FIXME: But there is a posiblity when these package does not have lib,
@@ -27,5 +27,12 @@ const libAlias = {
27
27
  '@zohodesk/timetracker/lib': '@zohodesk/timetracker/es',
28
28
  '@zohodesk/variables/lib': '@zohodesk/variables/es',
29
29
  '@zohodesk/virtualizer/lib': '@zohodesk/virtualizer/es'
30
- };
31
- exports.libAlias = libAlias;
30
+ }; // '^@root(.*)$': '<rootDir>/src$1',
31
+ // '^@components(.*)$': '<rootDir>/src/components$1',
32
+
33
+ exports.libAlias = libAlias;
34
+ const jestModuleNameMapper = Object.keys(libAlias).reduce((previousValue, key) => {
35
+ previousValue[`^${key}(.*)$`] = `${libAlias[key]}$1`;
36
+ return previousValue;
37
+ }, {});
38
+ exports.jestModuleNameMapper = jestModuleNameMapper;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.loaderResolver = loaderResolver;
7
+ exports.moduleResolver = moduleResolver;
8
+
9
+ var _constants = require("../constants");
10
+
11
+ var _libAlias = require("./libAlias");
12
+
13
+ function moduleResolver(options) {
14
+ const {
15
+ moduleResolvePath,
16
+ disableES5Transpile
17
+ } = options.app;
18
+ const nodeModulesPath = moduleResolvePath ? require(require.resolve(moduleResolvePath, {
19
+ paths: [options.cwd]
20
+ })).nodeModulesPath : ''; // const {unstableDepsInverse} = options;
21
+
22
+ return {
23
+ modules: [nodeModulesPath, 'node_modules'].filter(Boolean),
24
+ alias: disableES5Transpile ? _libAlias.libAlias : {} // alias: { ...libAlias, ...clientDependenies }
25
+
26
+ };
27
+ }
28
+
29
+ function loaderResolver(options) {
30
+ // const unstableDepsInverse = false;
31
+ const {
32
+ unstableDepsInverse
33
+ } = options;
34
+ return {
35
+ modules: unstableDepsInverse ? ['node_modules', _constants.cliNodemodulesPath] : [_constants.cliNodemodulesPath, 'node_modules'] // alias: libAlias
36
+
37
+ };
38
+ }
@@ -10,24 +10,23 @@ var _pluginUtils = require("../pluginUtils");
10
10
 
11
11
  var _loaderUtils = require("../loaderUtils");
12
12
 
13
- var _libAlias = require("./libAlias");
14
-
15
13
  var _configsAssetsLoaders = require("../loaderUtils/configsAssetsLoaders");
16
14
 
15
+ var _resolvers = require("./resolvers");
16
+
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
- let options = (0, _utils.getOptions)();
20
- let {
21
- unstableDepsInverse,
19
+ const options = (0, _utils.getOptions)();
20
+ const {
22
21
  app: {
23
22
  folder,
24
23
  context,
25
24
  server,
26
25
  outputFolder,
27
- rtlExclude,
28
- combinerMq,
29
- hasRTL,
30
- hoverActive,
26
+ plugins,
27
+ exclude,
28
+ mediaQueryHoverActiveString,
29
+ cssVariableReplacementConfig,
31
30
  cssUniqueness,
32
31
  seperateCssModules,
33
32
  changeRuntimeChunkChar,
@@ -36,19 +35,18 @@ let {
36
35
  cssHashSelectors,
37
36
  classNamePrefix,
38
37
  selectorReplace,
39
- disableES5Transpile,
40
38
  devConsoleExculde,
41
39
  sourcemap,
42
40
  crossorigin
43
41
  }
44
42
  } = options;
45
- let {
43
+ const {
46
44
  disableContextURL
47
45
  } = server;
48
- let appPath = process.cwd();
49
- let contextURL = disableContextURL ? '' : context;
50
- let serverUrl = (0, _utils.getServerURL)(server, 'https');
51
- let output = {
46
+ const appPath = process.cwd();
47
+ const contextURL = disableContextURL ? '' : context;
48
+ const serverUrl = (0, _utils.getServerURL)(server, 'https');
49
+ const output = {
52
50
  path: _path.default.join(appPath, outputFolder),
53
51
  filename: 'js/[name].js',
54
52
  chunkFilename: 'js/[name].js',
@@ -87,9 +85,9 @@ module.exports = {
87
85
  test: /\.js$/,
88
86
  use: (0, _loaderUtils.getDevJsLoaders)(options),
89
87
  include: module => {
90
- let srcPath = _path.default.join(appPath, folder);
88
+ const srcPath = _path.default.join(appPath, folder);
91
89
 
92
- let depsPath = _path.default.join(appPath, 'node_modules', '@zohodesk');
90
+ const depsPath = _path.default.join(appPath, 'node_modules', '@zohodesk');
93
91
 
94
92
  if (module.includes(srcPath) || devConsoleExculde && module.includes(depsPath)) {
95
93
  return true;
@@ -100,10 +98,10 @@ module.exports = {
100
98
  }, seperateCssModules ? {
101
99
  test: /\.css$/,
102
100
  exclude: /\.module\.css$/,
103
- use: (0, _loaderUtils.getCSSLoaders)(hasRTL, rtlExclude, combinerMq, hoverActive, '[local]', false, null)
101
+ use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, '[local]', false, null)
104
102
  } : null, {
105
103
  test: seperateCssModules ? /\.module\.css$/ : /(\.module)?\.css$/,
106
- use: (0, _loaderUtils.getCSSLoaders)(hasRTL, combinerMq, rtlExclude, hoverActive, null, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
104
+ use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, null, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
107
105
  }, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), {
108
106
  test: /\.tmpl$/,
109
107
  use: [{
@@ -126,11 +124,6 @@ module.exports = {
126
124
  externals: {
127
125
  ZC: '$ZC'
128
126
  },
129
- resolve: {
130
- modules: unstableDepsInverse ? ['node_modules', _path.default.resolve(__dirname, '..', '..', 'node_modules')] : [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules'],
131
- alias: disableES5Transpile ? _libAlias.libAlias : {}
132
- },
133
- resolveLoader: {
134
- modules: unstableDepsInverse ? ['node_modules', _path.default.resolve(__dirname, '..', '..', 'node_modules')] : [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
135
- }
127
+ resolve: (0, _resolvers.moduleResolver)(options),
128
+ resolveLoader: (0, _resolvers.loaderResolver)(options)
136
129
  };
@@ -8,24 +8,22 @@ var _pluginUtils = require("../pluginUtils");
8
8
 
9
9
  var _loaderUtils = require("../loaderUtils");
10
10
 
11
- var _libAlias = require("./libAlias");
12
-
13
11
  var _configsAssetsLoaders = require("../loaderUtils/configsAssetsLoaders");
14
12
 
13
+ var _resolvers = require("./resolvers");
14
+
15
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
16
 
17
- let options = (0, _utils.getOptions)();
18
- let {
19
- unstableDepsInverse,
17
+ const options = (0, _utils.getOptions)();
18
+ const {
20
19
  docs: {
21
20
  componentFolder,
22
- disableES5Transpile,
23
21
  enableChunkHash,
24
22
  cssUniqueness,
25
- combinerMq,
26
- hasRTL,
27
- hoverActive,
28
- rtlExclude,
23
+ plugins,
24
+ exclude,
25
+ mediaQueryHoverActiveString,
26
+ cssVariableReplacementConfig,
29
27
  cssHashSelectors,
30
28
  classNamePrefix
31
29
  },
@@ -33,7 +31,7 @@ let {
33
31
  folder
34
32
  }
35
33
  } = options;
36
- let appPath = process.cwd();
34
+ const appPath = process.cwd();
37
35
  const nameTemplate = (0, _configsAssetsLoaders.createNameTemplate)(enableChunkHash);
38
36
 
39
37
  module.exports = isSSTest => ({
@@ -75,7 +73,7 @@ module.exports = isSSTest => ({
75
73
  exclude: /node_modules/
76
74
  }, {
77
75
  test: /(\.module)?\.css$/,
78
- use: (0, _loaderUtils.getCSSLoaders)(hasRTL, combinerMq, rtlExclude, hoverActive, false, cssUniqueness, null, cssHashSelectors, classNamePrefix)
76
+ use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, false, cssUniqueness, null, cssHashSelectors, classNamePrefix)
79
77
  }, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), {
80
78
  test: /\.html$/,
81
79
  use: {
@@ -104,11 +102,6 @@ module.exports = isSSTest => ({
104
102
  externals: {
105
103
  ZC: '$ZC'
106
104
  },
107
- resolve: {
108
- modules: unstableDepsInverse ? ['node_modules', _path.default.resolve(__dirname, '..', '..', 'node_modules')] : [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules'],
109
- alias: disableES5Transpile ? _libAlias.libAlias : {}
110
- },
111
- resolveLoader: {
112
- modules: unstableDepsInverse ? ['node_modules', _path.default.resolve(__dirname, '..', '..', 'node_modules')] : [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
113
- }
105
+ resolve: (0, _resolvers.moduleResolver)(options),
106
+ resolveLoader: (0, _resolvers.loaderResolver)(options)
114
107
  });
@@ -10,17 +10,19 @@ var _getLibraryImactPlugins = _interopRequireDefault(require("../pluginUtils/get
10
10
 
11
11
  var _configsAssetsLoaders = require("../loaderUtils/configsAssetsLoaders");
12
12
 
13
+ var _resolvers = require("./resolvers");
14
+
13
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
16
 
15
- let options = (0, _utils.getOptions)();
16
- let {
17
+ const options = (0, _utils.getOptions)();
18
+ const {
17
19
  docs: {
18
20
  componentFolder,
19
21
  cssUniqueness,
20
- hasRTL,
21
- rtlExclude,
22
- hoverActive,
23
- combinerMq,
22
+ plugins,
23
+ exclude,
24
+ mediaQueryHoverActiveString,
25
+ cssVariableReplacementConfig,
24
26
  cssHashSelectors,
25
27
  enableChunkHash,
26
28
  classNamePrefix
@@ -29,7 +31,7 @@ let {
29
31
  folder
30
32
  }
31
33
  } = options;
32
- let appPath = process.cwd();
34
+ const appPath = process.cwd();
33
35
  const nameTemplate = (0, _configsAssetsLoaders.createNameTemplate)(enableChunkHash);
34
36
  module.exports = {
35
37
  entry: {
@@ -38,6 +40,7 @@ module.exports = {
38
40
  },
39
41
  devtool: 'none',
40
42
  mode: 'development',
43
+ stats: 'errors-only',
41
44
  output: {
42
45
  path: _path.default.join(appPath, 'build'),
43
46
  filename: 'js/[name].js',
@@ -70,7 +73,7 @@ module.exports = {
70
73
  exclude: /node_modules/
71
74
  }, {
72
75
  test: /(\.module)?\.css$/,
73
- use: (0, _loaderUtils.getCSSLoaders)(hasRTL, rtlExclude, combinerMq, hoverActive, false, cssUniqueness, null, cssHashSelectors, classNamePrefix)
76
+ use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, false, cssUniqueness, null, cssHashSelectors, classNamePrefix)
74
77
  }, (0, _configsAssetsLoaders.configImageLoader)(nameTemplate), (0, _configsAssetsLoaders.configFontLoader)(nameTemplate), (0, _configsAssetsLoaders.configSVGLoader)(nameTemplate), (0, _configsAssetsLoaders.configAudioLoader)(nameTemplate), (0, _configsAssetsLoaders.configVideoLoader)(nameTemplate), {
75
78
  test: /\.html$/,
76
79
  use: {
@@ -100,11 +103,6 @@ module.exports = {
100
103
  externals: {
101
104
  ZC: '$ZC'
102
105
  },
103
- resolve: {
104
- modules: [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
105
- },
106
- resolveLoader: {
107
- modules: [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
108
- },
109
- stats: 'errors-only'
106
+ resolve: (0, _resolvers.moduleResolver)(options),
107
+ resolveLoader: (0, _resolvers.loaderResolver)(options)
110
108
  };
@@ -10,29 +10,27 @@ var _pluginUtils = require("../pluginUtils");
10
10
 
11
11
  var _loaderUtils = require("../loaderUtils");
12
12
 
13
- var _libAlias = require("./libAlias");
14
-
15
13
  var _configsAssetsLoaders = require("../loaderUtils/configsAssetsLoaders");
16
14
 
15
+ var _resolvers = require("./resolvers");
16
+
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
19
  // import TerserPlugin from 'terser-webpack-plugin';
20
- let options = (0, _utils.getOptions)();
21
- let {
22
- unstableDepsInverse,
20
+ const options = (0, _utils.getOptions)();
21
+ const {
23
22
  app: {
24
23
  folder,
25
24
  context,
26
- enableChunkHash,
27
25
  outputFolder,
28
26
  disableES5Transpile,
29
27
  removeAttribute,
30
28
  enableSMap,
31
29
  server,
32
- combinerMq,
33
- hasRTL,
34
- rtlExclude,
35
- hoverActive,
30
+ plugins,
31
+ exclude,
32
+ mediaQueryHoverActiveString,
33
+ cssVariableReplacementConfig,
36
34
  cssUniqueness,
37
35
  server: {
38
36
  mode
@@ -47,10 +45,13 @@ let {
47
45
  crossorigin
48
46
  }
49
47
  } = options;
50
- let appPath = process.cwd();
51
- let isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
48
+ let {
49
+ enableChunkHash
50
+ } = options.app;
51
+ const appPath = process.cwd();
52
+ const isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
52
53
  enableChunkHash = !isDevelopment && enableChunkHash;
53
- let output = {
54
+ const output = {
54
55
  path: _path.default.resolve(appPath, outputFolder),
55
56
  filename: enableChunkHash ? 'js/[name].[chunkhash:20]_.js' : 'js/[name]_.js',
56
57
  chunkFilename: enableChunkHash ? 'js/[name].[chunkhash:20]_.js' : 'js/[name]_.js',
@@ -63,15 +64,15 @@ if (crossorigin) {
63
64
  }
64
65
 
65
66
  if (isDevelopment) {
66
- let {
67
+ const {
67
68
  disableContextURL
68
69
  } = server;
69
- let contextURL = disableContextURL ? '' : context;
70
- let serverUrl = (0, _utils.getServerURL)(server, 'https');
70
+ const contextURL = disableContextURL ? '' : context;
71
+ const serverUrl = (0, _utils.getServerURL)(server, 'https');
71
72
  output.publicPath = `${[serverUrl, contextURL].filter(a => a).join('/')}/`;
72
73
  }
73
74
 
74
- let shouldRemovePropTypes = !isDevelopment && removePropTypes;
75
+ const shouldRemovePropTypes = !isDevelopment && removePropTypes;
75
76
  module.exports = {
76
77
  entry: (0, _common.getEntries)(options, 'production'),
77
78
  devtool: isDevelopment ? 'cheap-module-source-map' : enableSMap ? 'hidden-source-map' : 'none',
@@ -135,9 +136,9 @@ module.exports = {
135
136
  }].filter(Boolean),
136
137
  // include: path.join(appPath, folder)
137
138
  include: module => {
138
- let srcPath = _path.default.join(appPath, folder);
139
+ const srcPath = _path.default.join(appPath, folder);
139
140
 
140
- let depsPath = _path.default.join(appPath, 'node_modules', '@zohodesk');
141
+ const depsPath = _path.default.join(appPath, 'node_modules', '@zohodesk');
141
142
 
142
143
  if (module.includes(srcPath) || devConsoleExculde && module.includes(depsPath)) {
143
144
  return true;
@@ -148,10 +149,10 @@ module.exports = {
148
149
  }, seperateCssModules ? {
149
150
  test: /\.css$/,
150
151
  exclude: /\.module\.css$/,
151
- use: (0, _loaderUtils.getCSSLoaders)(hasRTL, rtlExclude, hoverActive, combinerMq, '[local]', false, null)
152
+ use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, cssVariableReplacementConfig, mediaQueryHoverActiveString, '[local]', false, null)
152
153
  } : null, {
153
154
  test: seperateCssModules ? /\.module\.css$/ : /\.css$/,
154
- use: (0, _loaderUtils.getCSSLoaders)(hasRTL, combinerMq, rtlExclude, hoverActive, false, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
155
+ use: (0, _loaderUtils.getCSSLoaders)(plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, false, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix)
155
156
  }, {
156
157
  test: /\.jpe?g$|\.gif$|\.png$/,
157
158
  use: [{
@@ -212,11 +213,6 @@ module.exports = {
212
213
  externals: {
213
214
  ZC: '$ZC'
214
215
  },
215
- resolve: {
216
- modules: unstableDepsInverse ? ['node_modules', _path.default.resolve(__dirname, '..', '..', 'node_modules')] : [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules'],
217
- alias: disableES5Transpile ? _libAlias.libAlias : {}
218
- },
219
- resolveLoader: {
220
- modules: unstableDepsInverse ? ['node_modules', _path.default.resolve(__dirname, '..', '..', 'node_modules')] : [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
221
- }
216
+ resolve: (0, _resolvers.moduleResolver)(options),
217
+ resolveLoader: (0, _resolvers.loaderResolver)(options)
222
218
  };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.cliRootPath = exports.cliNodemodulesPath = exports.appPath = exports.CONFIG_ROOT = exports.BASE_CONFIG_KEY = void 0;
7
+
8
+ var _path = _interopRequireDefault(require("path"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ const BASE_CONFIG_KEY = 'react-cli';
13
+ exports.BASE_CONFIG_KEY = BASE_CONFIG_KEY;
14
+
15
+ const cliRootPath = _path.default.resolve(__dirname, '..');
16
+
17
+ exports.cliRootPath = cliRootPath;
18
+ const CONFIG_ROOT = 'react-cli';
19
+ exports.CONFIG_ROOT = CONFIG_ROOT;
20
+
21
+ const cliNodemodulesPath = _path.default.resolve(cliRootPath, 'node_modules'); // export const babelrcPath = join(cliRootPath, '.babelrc');
22
+
23
+
24
+ exports.cliNodemodulesPath = cliNodemodulesPath;
25
+ const appPath = process.cwd(); // export const appInitialHTMLTemplatePath = path.join(
26
+ // process.cwd(),
27
+ // 'src',
28
+ // 'index.html'
29
+ // );
30
+
31
+ exports.appPath = appPath;
@@ -6,23 +6,30 @@ var _postcssHashClassname = _interopRequireDefault(require("postcss-hash-classna
6
6
 
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
8
 
9
+ var _utils = require("../../utils");
10
+
9
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
12
 
11
13
  let count = 0;
14
+ const options = (0, _utils.getOptions)();
15
+ const {
16
+ classnameFormat
17
+ } = options.test;
12
18
  module.exports = {
13
19
  process: function (src) {
14
20
  count++;
15
- let opts = {
21
+ const opts = {
16
22
  hashType: 'md5',
17
- digestType: 'base32'
23
+ digestType: 'base32',
24
+ maxLength: 6,
25
+ type: '.json',
26
+ classnameFormat: classnameFormat,
27
+ outputName: `jsonFile_test_${count}`
18
28
  };
19
- opts.maxLength = 6;
20
- opts.type = '.json';
21
- opts.outputName = `jsonFile_test_${count}`;
22
- let processor = (0, _postcss.default)([(0, _postcssHashClassname.default)(opts)]);
29
+ const processor = (0, _postcss.default)([(0, _postcssHashClassname.default)(opts)]);
23
30
  processor.process(src).css;
24
31
 
25
- let jsonMap = _fs.default.readFileSync(`jsonFile_test_${count}.json`, 'UTF-8');
32
+ const jsonMap = _fs.default.readFileSync(`jsonFile_test_${count}.json`, 'UTF-8');
26
33
 
27
34
  _fs.default.unlinkSync(`jsonFile_test_${count}.json`);
28
35
 
@@ -13,10 +13,27 @@ var _utils = require("../utils");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
- let options = (0, _utils.getOptions)();
17
- let isWin = process.platform === 'win32';
16
+ const fs = require('fs');
18
17
 
19
- let getCSSLoaders = (hasRTL, combinerMq, rtlExclude, hoverActive, classNameBlob, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix) => {
18
+ const options = (0, _utils.getOptions)();
19
+ const isWin = process.platform === 'win32';
20
+
21
+ function windowsModification(array) {
22
+ return isWin ? array.map(r => r.replace(/\//g, '\\')) : array;
23
+ }
24
+
25
+ function excludeEmptyCheckPlugin({
26
+ enable,
27
+ ignore,
28
+ plugins
29
+ }) {
30
+ return enable ? ignore.length === 0 ? plugins : [require('../postcss-plugins/ExcludePlugin')({
31
+ ignore,
32
+ plugins
33
+ })] : [];
34
+ }
35
+
36
+ const getCSSLoaders = (plugins, exclude, mediaQueryHoverActiveString, cssVariableReplacementConfig, classNameBlob, cssUniqueness, selectorReplace, cssHashSelectors, classNamePrefix) => {
20
37
  const {
21
38
  devCssFileBountry
22
39
  } = options.app;
@@ -26,8 +43,11 @@ let getCSSLoaders = (hasRTL, combinerMq, rtlExclude, hoverActive, classNameBlob,
26
43
  const {
27
44
  cssSelectorZipPath
28
45
  } = options.impactService;
29
- let rtlExcludeLocal = isWin ? rtlExclude.map(r => r.replace(/\//g, '\\')) : rtlExclude;
30
- let cssLoaderOptions = {
46
+ const rtlExcludeLocal = windowsModification(exclude.rtl);
47
+ const hoverActiveExcludeLocal = windowsModification(exclude.hoverActive);
48
+ const combinerMediaQueryExcludeLocal = windowsModification(exclude.combinerMediaQuery);
49
+ const cssVariableReplacementExcludeLocal = windowsModification(exclude.cssVariableReplacement);
50
+ const cssLoaderOptions = {
31
51
  // importLoaders: hasRTL||hoverActive ? 1 : 0,
32
52
  importLoaders: 1,
33
53
  modules: {},
@@ -40,7 +60,13 @@ let getCSSLoaders = (hasRTL, combinerMq, rtlExclude, hoverActive, classNameBlob,
40
60
  cssLoaderOptions.modules.getLocalIdent = (0, _cssClassNameGenerate.default)(cssUniqueness, cssHashSelectors, classNamePrefix);
41
61
  }
42
62
 
43
- const postcssPlugins = [valueReplacer && require('../postcss-plugins/ValueReplacer')(valueReplacer), selectorReplace && require('postcss-selector-replace')(selectorReplace), hasRTL && require('../postcss-plugins/ExcludeRTLPlugin')({
63
+ const postcssPlugins = [valueReplacer && require('../postcss-plugins/ValueReplacer')(valueReplacer), selectorReplace && require('postcss-selector-replace')(selectorReplace), // ...excludeEmptyCheckPlugin({
64
+ // enable: true,
65
+ // ignore: [],
66
+ // plugins: [require('../postcss-plugins/variablePropertiesCollector').default()]
67
+ // }),
68
+ ...excludeEmptyCheckPlugin({
69
+ enable: plugins.hasRTL,
44
70
  ignore: rtlExcludeLocal,
45
71
  plugins: [require('@zohodesk/postcss-rtl')({
46
72
  addPrefixToSelector: function addPrefixToSelector(selector, prefix) {
@@ -51,8 +77,19 @@ let getCSSLoaders = (hasRTL, combinerMq, rtlExclude, hoverActive, classNameBlob,
51
77
  return `${prefix} ${selector}`; // Make selectors like [dir=rtl] > .selector
52
78
  }
53
79
  })]
54
- }), // require('postcss-import')(),
55
- combinerMq && require('postcss-combine-media-query')(), hoverActive && require('../postcss-plugins/hoverActivePlugin')()].filter(Boolean);
80
+ }), ...excludeEmptyCheckPlugin({
81
+ enable: plugins.combinerMediaQuery,
82
+ ignore: combinerMediaQueryExcludeLocal,
83
+ plugins: [require('postcss-combine-media-query')]
84
+ }), ...excludeEmptyCheckPlugin({
85
+ enable: plugins.hoverActive,
86
+ ignore: hoverActiveExcludeLocal,
87
+ plugins: [require('../postcss-plugins/hoverActivePlugin')(mediaQueryHoverActiveString)]
88
+ }), ...excludeEmptyCheckPlugin({
89
+ enable: plugins.cssVariableReplacement,
90
+ ignore: cssVariableReplacementExcludeLocal,
91
+ plugins: [fs.existsSync(cssVariableReplacementConfig) && require('../postcss-plugins/variableModificationPlugin/index')(cssVariableReplacementConfig)]
92
+ })].filter(Boolean);
56
93
  return [cssSelectorZipPath && {
57
94
  loader: require.resolve('../loaders/selectorMappingLoader')
58
95
  }, {
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.configHtmlWebpackPlugins = configHtmlWebpackPlugins;
7
+
8
+ var _path = _interopRequireDefault(require("path"));
9
+
10
+ var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
11
+
12
+ var _htmlWebpackInjectAttributesPlugin = _interopRequireDefault(require("html-webpack-inject-attributes-plugin"));
13
+
14
+ var _common = require("../common");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ const defaultHTMLMiniFyOption = {
19
+ collapseWhitespace: true,
20
+ minifyCSS: true,
21
+ minifyJS: true,
22
+ keepClosingSlash: true,
23
+ removeComments: false,
24
+ removeRedundantAttributes: true,
25
+ removeScriptTypeAttributes: true,
26
+ removeStyleLinkTypeAttributes: true,
27
+ useShortDoctype: true
28
+ };
29
+
30
+ function configHtmlWebpackPlugins(plugins, {
31
+ enableChunkHash = false,
32
+ folder,
33
+ inject,
34
+ crossorigin,
35
+ hasEFC,
36
+ minify: minifyHtmlOptions = false
37
+ }) {
38
+ const optionsHtmlWebpack = {
39
+ chunksSortMode: 'none',
40
+ filename: enableChunkHash ? 'index.[templatehash:20].html' : 'index.html',
41
+ template: _path.default.join(process.cwd(), folder, 'index.html'),
42
+ minify: minifyHtmlOptions === true ? defaultHTMLMiniFyOption : minifyHtmlOptions === null ? false : minifyHtmlOptions,
43
+ // : typeof minifyHtmlOptions === 'object'
44
+ // ? minifyHtmlOptions
45
+ // : minifyHtmlOptions,,
46
+ templateParameters: _common.templateParameters,
47
+ scriptLoading: 'defer',
48
+ inject: inject
49
+ };
50
+
51
+ if (hasEFC) {
52
+ optionsHtmlWebpack.excludeChunks = ['efc', 'widget'];
53
+ }
54
+
55
+ plugins.push(new _htmlWebpackPlugin.default(optionsHtmlWebpack));
56
+ crossorigin && plugins.push(new _htmlWebpackInjectAttributesPlugin.default({
57
+ crossorigin: 'anonymous'
58
+ }));
59
+ }