@zohodesk/react-cli 1.1.9 → 1.1.11-exp.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.
@@ -35,6 +35,8 @@ var _RtlCssPlugin = require("../plugins/RtlSplitPlugin/RtlCssPlugin");
35
35
 
36
36
  var _configHtmlWebpackPlugins = require("./configHtmlWebpackPlugins");
37
37
 
38
+ var _StatsPlugin = _interopRequireDefault(require("../plugins/StatsPlugin"));
39
+
38
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
41
 
40
42
  // eslint-disable-next-line no-unused-vars
@@ -88,6 +90,9 @@ const getProdPlugins = (options, publicPath = '') => {
88
90
  templateFilePath,
89
91
  localeAttr: efcLocaleAttr
90
92
  } = options.efc;
93
+ const {
94
+ enable: enableStats
95
+ } = options.stats;
91
96
  const hasEFC = newOptionForEnableEFC || prevOptionForEnableEFC;
92
97
  const hashTempalate = enableChunkHash ? '.[chunkhash:20]_' : '';
93
98
  const cssLTRFileNameTempalte = `css/[name]${hashTempalate}${enableRTLSplit ? '.ltr' : ''}.css`;
@@ -288,6 +293,7 @@ const getProdPlugins = (options, publicPath = '') => {
288
293
 
289
294
 
290
295
  customAttributes.enable && pluginsArr.push(new _CustomAttributePlugin.CustomAttributePlugin(customAttributes));
296
+ enableStats && new _StatsPlugin.default();
291
297
  return pluginsArr;
292
298
  };
293
299
 
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ const {
4
+ defaulter
5
+ } = require('../utils/getOptions');
6
+
7
+ const fs = require('fs');
8
+
9
+ const path = require('path');
10
+
11
+ const pluginName = 'stats-plugin';
12
+ const statsSchema = {
13
+ preset: 'normal',
14
+ moduleTrace: true // source: true
15
+ // errorDetails: true,
16
+ // chunkRelations: true
17
+
18
+ };
19
+ module.exports = class StatsPlugin {
20
+ constructor(options = {}) {
21
+ this.statsOptions = defaulter(statsSchema, options);
22
+ }
23
+
24
+ apply(compiler) {
25
+ compiler.hooks.done.tap(pluginName, stats => {
26
+ const statsJson = stats.toJson(this.statsOptions);
27
+ this.emitStats(statsJson);
28
+ });
29
+ }
30
+
31
+ emitStats(statsJson) {
32
+ const {
33
+ outputPath
34
+ } = statsJson;
35
+ const stringifiedJson = typeof statsJson === 'object' ? JSON.stringify(statsJson) : statsJson;
36
+ const bufferJson = Buffer.from(stringifiedJson);
37
+ fs.writeFile(path.join(outputPath, 'stats.json'), bufferJson, err => {
38
+ if (err) {
39
+ throw err;
40
+ }
41
+ });
42
+ }
43
+
44
+ };
@@ -53,23 +53,23 @@ function isFileNameMatchingPattern({
53
53
  plugins.forEach(p => {
54
54
  pluginObj[p.postcssPlugin] = p;
55
55
  });
56
- const finalPlugins = [];
57
- order.forEach(key => {
58
- const p = pluginObj[aliasNames[key]];
56
+ const finalPlugins = order.filter(key => {
59
57
  const pluginSpecificFilter = filterObject[key];
60
58
 
61
59
  if (!pluginSpecificFilter || pluginSpecificFilter.length === 0) {
62
- finalPlugins.push(p);
63
- } else {
64
- // eslint-disable-next-line no-use-before-define
65
- const isMatching = isFilePathMatchingPattern(filename, pluginSpecificFilter);
60
+ return true;
61
+ } // eslint-disable-next-line no-use-before-define
66
62
 
67
- if (isMatching) {
68
- finalPlugins.push(p);
69
- }
70
- }
71
- });
72
- return finalPlugins;
63
+
64
+ const isMatching = isFilePathMatchingPattern(filename, pluginSpecificFilter);
65
+ return isMatching;
66
+ }).map(key => {
67
+ const p = pluginObj[aliasNames[key]];
68
+ return p;
69
+ }); // if unknown key given in plugins and pattern loop will run but post-css plugin won't be available and will be undefined in array
70
+ // So we do filter as safety measure.
71
+
72
+ return finalPlugins.filter(Boolean);
73
73
  }
74
74
 
75
75
  function isFilePathMatchingPattern(filePath, patterns) {
@@ -15,7 +15,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
15
15
 
16
16
  // TODO move deprecated options to separate file and manage seperately
17
17
  var _default = {
18
- cliRootPath: null,
19
18
  unstableDepsInverse: {
20
19
  value: false,
21
20
  cli: 'unstable_deps_inverse'
@@ -130,6 +129,7 @@ var _default = {
130
129
  value: '@zohodesk/client_packages_group',
131
130
  cli: 'module_resolve_path'
132
131
  },
132
+ customClassNamePrefix: [],
133
133
  // this option only for impact testing
134
134
  devCssFileBountry: {
135
135
  value: '',
@@ -357,6 +357,7 @@ var _default = {
357
357
  hover: 'all and (min--moz-device-pixel-ratio:0) and (hover: hover), (hover: hover)',
358
358
  none: '(hover: none)'
359
359
  },
360
+ customClassNamePrefix: [],
360
361
  componentFolder: 'src',
361
362
  cssUniqueness: {
362
363
  value: true,
@@ -722,6 +723,12 @@ var _default = {
722
723
  cli: 'module_mode'
723
724
  },
724
725
  disableES5Transpile: true
726
+ },
727
+ stats: {
728
+ enable: {
729
+ value: false,
730
+ cli: 'enable_stats'
731
+ }
725
732
  }
726
733
  };
727
734
  exports.default = _default;
@@ -38,14 +38,35 @@ const isSelectorPackage = (resourcePath, packages) => {
38
38
  return isValid;
39
39
  };
40
40
 
41
+ function patternBasedClass({
42
+ customClassNamePrefix,
43
+ context,
44
+ relativePath,
45
+ localName
46
+ }) {
47
+ let newName = null;
48
+ customClassNamePrefix.forEach(obj => {
49
+ if (obj.enable) {
50
+ if (obj.patterns && obj.prefix && (0, _fileHandling.isFileNameMatchingPluginPattern)({
51
+ filename: context.resourcePath,
52
+ filterArr: obj.patterns
53
+ })) {
54
+ const h = (0, _getHash.default)(`${relativePath}-${localName}`, 10);
55
+ newName = `${obj.prefix}${h}`;
56
+ }
57
+ }
58
+ });
59
+ return newName;
60
+ }
61
+
41
62
  var _default = (unique = true, {
42
63
  filenames,
43
64
  packages
44
- }, classNamePrefix, patterns) => (context, localIdentName, localName) => {
65
+ }, classNamePrefix, customClassNamePrefix, patterns) => (context, localIdentName, localName) => {
45
66
  // console.log(patterns, context.resourcePath);
46
- // NOTE: in build macine we use date as folder path.
67
+ // NOTE: in build machine we use date as folder path.
47
68
  // So every time we create new build there is path will alway different
48
- // in order to minmaze that problem we try in relative path;
69
+ // in order to minimize that problem we try in relative path;
49
70
  // console.log('context.resourcePath', context.resourcePath, context);
50
71
  // let contextResourcePath = context.resourcePath;
51
72
  const filePaths = context.resourcePath.split(_path.default.sep);
@@ -53,7 +74,8 @@ var _default = (unique = true, {
53
74
  const [fileNameWithoutExt] = fileName.split('.');
54
75
  const cleanFileName = fileNameWithoutExt.replace(/-/g, '_').toLowerCase();
55
76
 
56
- const relativePath = _path.default.relative(context.rootContext, context.resourcePath);
77
+ const relativePath = _path.default.relative(context.rootContext, context.resourcePath); // console.log('customClassNamePrefix', customClassNamePrefix);
78
+
57
79
  /*
58
80
  input :
59
81
  context.resourcePath : 'D:/MyWork/..../desk_client_app/supportapp/src/components/Avatar/Avatar.module.css,
@@ -86,7 +108,18 @@ var _default = (unique = true, {
86
108
  if (unique) {
87
109
  const h = (0, _getHash.default)(`${relativePath}-${localName}`, 10);
88
110
  return `${classNamePrefix}${h}`;
89
- } //css file has casesensitive selector issue so can't toLowerCase
111
+ }
112
+
113
+ const patternClass = patternBasedClass({
114
+ customClassNamePrefix,
115
+ context,
116
+ relativePath,
117
+ localName
118
+ });
119
+
120
+ if (patternClass) {
121
+ return patternClass;
122
+ } //css file has case sensitive selector issue so can't toLowerCase
90
123
  //let local = localName.toLowerCase()
91
124
 
92
125
 
@@ -109,13 +109,19 @@ function deprecationSupport(options, disableDeprecationWarning) {
109
109
 
110
110
  function addExcludesToPattern(patterns, exclude, type) {
111
111
  Object.keys(defaultPostCssPluginOptions).forEach(key => {
112
- if (exclude[key] && patterns[key].length === 0) {
112
+ if (!exclude[key] || exclude[key].length === 0) {
113
+ return;
114
+ }
115
+
116
+ if (patterns[key].length === 0) {
113
117
  deprecateOption(`${type}.exclude.${key}`, `${type}.patterns.${key}`);
114
118
  let tempArr = exclude[key];
115
119
  tempArr = tempArr.map(x => _path.default.join('!**', x, '**')); // Since patterns[key] is empty we need to wildcard for allow all others.
116
120
 
117
121
  tempArr.unshift('*');
118
122
  patterns[key] = tempArr;
123
+ } else if (exclude[key].length > 0 && patterns[key].length > 0) {
124
+ deprecateOption(`${type}.exclude.${key}`, `${type}.patterns.${key}`, ` And Since you have used ${type}.patterns.${key} we won't use ${type}.exclude.${key}. So please make appropriate changes`);
119
125
  }
120
126
  });
121
127
  }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.defaulter = exports.default = void 0;
7
7
 
8
8
  var _child_process = require("child_process");
9
9
 
@@ -15,6 +15,10 @@ var _schemas = _interopRequireDefault(require("../schemas"));
15
15
 
16
16
  var _deprecationSupport = require("./deprecationSupport");
17
17
 
18
+ var _deprecationLogger = require("../deprecationLogger");
19
+
20
+ var _logger = require("../logger");
21
+
18
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
23
 
20
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -128,10 +132,15 @@ const defaulter = (target, source) => {
128
132
  return defaultObject;
129
133
  };
130
134
 
135
+ exports.defaulter = defaulter;
131
136
  global.reactCLIOptions = null;
132
137
 
133
138
  const getOptionsFromConfigFile = (appPath, configFileName) => {
134
- const fileName = configFileName || 'build.config.js';
139
+ const fileName = configFileName || 'react-cli.config.js';
140
+
141
+ if (!configFileName) {
142
+ (0, _logger.verboseLogger)('we have used default react-cli.config.js');
143
+ }
135
144
 
136
145
  const packagePath = _path.default.join(appPath, fileName);
137
146
 
@@ -139,6 +148,13 @@ const getOptionsFromConfigFile = (appPath, configFileName) => {
139
148
  return require(packagePath).config;
140
149
  }
141
150
 
151
+ const oldDeprecatedConfigFilePath = _path.default.join(appPath, 'build.config.js');
152
+
153
+ if ((0, _fs.existsSync)(oldDeprecatedConfigFilePath)) {
154
+ (0, _deprecationLogger.deprecateMessage)('"build.config.js" file was deprecated. So Kindly rename it as "react-cli.config.js"');
155
+ return require(oldDeprecatedConfigFilePath).config;
156
+ }
157
+
142
158
  return null;
143
159
  };
144
160
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@zohodesk/react-cli",
3
- "version": "1.1.6",
3
+ "version": "1.1.11-exp.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@zohodesk/react-cli",
9
- "version": "1.1.6",
9
+ "version": "1.1.11-exp.1",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
12
  "@babel/cli": "7.10.5",
@@ -57,6 +57,7 @@
57
57
  "jsdom": "16.4.0",
58
58
  "loader-utils": "2.0.0",
59
59
  "lodash-webpack-plugin": "0.11.5",
60
+ "markdown-it": "13.0.1",
60
61
  "mini-css-extract-plugin": "0.10.0",
61
62
  "nock": "13.2.9",
62
63
  "nodemailer": "6.4.11",
@@ -12144,6 +12145,14 @@
12144
12145
  "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
12145
12146
  "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
12146
12147
  },
12148
+ "node_modules/linkify-it": {
12149
+ "version": "4.0.1",
12150
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz",
12151
+ "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
12152
+ "dependencies": {
12153
+ "uc.micro": "^1.0.1"
12154
+ }
12155
+ },
12147
12156
  "node_modules/load-json-file": {
12148
12157
  "version": "1.1.0",
12149
12158
  "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@@ -12342,6 +12351,37 @@
12342
12351
  "node": ">=0.10.0"
12343
12352
  }
12344
12353
  },
12354
+ "node_modules/markdown-it": {
12355
+ "version": "13.0.1",
12356
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz",
12357
+ "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==",
12358
+ "dependencies": {
12359
+ "argparse": "^2.0.1",
12360
+ "entities": "~3.0.1",
12361
+ "linkify-it": "^4.0.1",
12362
+ "mdurl": "^1.0.1",
12363
+ "uc.micro": "^1.0.5"
12364
+ },
12365
+ "bin": {
12366
+ "markdown-it": "bin/markdown-it.js"
12367
+ }
12368
+ },
12369
+ "node_modules/markdown-it/node_modules/argparse": {
12370
+ "version": "2.0.1",
12371
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
12372
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
12373
+ },
12374
+ "node_modules/markdown-it/node_modules/entities": {
12375
+ "version": "3.0.1",
12376
+ "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
12377
+ "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
12378
+ "engines": {
12379
+ "node": ">=0.12"
12380
+ },
12381
+ "funding": {
12382
+ "url": "https://github.com/fb55/entities?sponsor=1"
12383
+ }
12384
+ },
12345
12385
  "node_modules/md5.js": {
12346
12386
  "version": "1.3.5",
12347
12387
  "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
@@ -12352,6 +12392,11 @@
12352
12392
  "safe-buffer": "^5.1.2"
12353
12393
  }
12354
12394
  },
12395
+ "node_modules/mdurl": {
12396
+ "version": "1.0.1",
12397
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
12398
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
12399
+ },
12355
12400
  "node_modules/media-typer": {
12356
12401
  "version": "0.3.0",
12357
12402
  "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -17169,6 +17214,11 @@
17169
17214
  "is-typedarray": "^1.0.0"
17170
17215
  }
17171
17216
  },
17217
+ "node_modules/uc.micro": {
17218
+ "version": "1.0.6",
17219
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
17220
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
17221
+ },
17172
17222
  "node_modules/uglify-js": {
17173
17223
  "version": "3.17.3",
17174
17224
  "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz",
@@ -28076,6 +28126,14 @@
28076
28126
  "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
28077
28127
  "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
28078
28128
  },
28129
+ "linkify-it": {
28130
+ "version": "4.0.1",
28131
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz",
28132
+ "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
28133
+ "requires": {
28134
+ "uc.micro": "^1.0.1"
28135
+ }
28136
+ },
28079
28137
  "load-json-file": {
28080
28138
  "version": "1.1.0",
28081
28139
  "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
@@ -28234,6 +28292,30 @@
28234
28292
  "object-visit": "^1.0.0"
28235
28293
  }
28236
28294
  },
28295
+ "markdown-it": {
28296
+ "version": "13.0.1",
28297
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz",
28298
+ "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==",
28299
+ "requires": {
28300
+ "argparse": "^2.0.1",
28301
+ "entities": "~3.0.1",
28302
+ "linkify-it": "^4.0.1",
28303
+ "mdurl": "^1.0.1",
28304
+ "uc.micro": "^1.0.5"
28305
+ },
28306
+ "dependencies": {
28307
+ "argparse": {
28308
+ "version": "2.0.1",
28309
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
28310
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
28311
+ },
28312
+ "entities": {
28313
+ "version": "3.0.1",
28314
+ "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
28315
+ "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="
28316
+ }
28317
+ }
28318
+ },
28237
28319
  "md5.js": {
28238
28320
  "version": "1.3.5",
28239
28321
  "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
@@ -28244,6 +28326,11 @@
28244
28326
  "safe-buffer": "^5.1.2"
28245
28327
  }
28246
28328
  },
28329
+ "mdurl": {
28330
+ "version": "1.0.1",
28331
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
28332
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
28333
+ },
28247
28334
  "media-typer": {
28248
28335
  "version": "0.3.0",
28249
28336
  "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -32025,6 +32112,11 @@
32025
32112
  "is-typedarray": "^1.0.0"
32026
32113
  }
32027
32114
  },
32115
+ "uc.micro": {
32116
+ "version": "1.0.6",
32117
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
32118
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
32119
+ },
32028
32120
  "uglify-js": {
32029
32121
  "version": "3.17.3",
32030
32122
  "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/react-cli",
3
- "version": "1.1.9",
3
+ "version": "1.1.11-exp.1",
4
4
  "description": "A CLI tool for build modern web application and libraries",
5
5
  "scripts": {
6
6
  "init": "node ./lib/utils/init.js",
@@ -80,7 +80,7 @@
80
80
  "jsdom": "16.4.0",
81
81
  "loader-utils": "2.0.0",
82
82
  "lodash-webpack-plugin": "0.11.5",
83
- "markdown-it": "^13.0.1",
83
+ "markdown-it": "13.0.1",
84
84
  "mini-css-extract-plugin": "0.10.0",
85
85
  "nock": "13.2.9",
86
86
  "nodemailer": "6.4.11",