@zohodesk/react-cli 0.0.1-exp.160.3 → 0.0.1-exp.161.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.
- package/README.md +38 -9
- package/lib/configs/webpack.prod.config.js +3 -6
- package/lib/pluginUtils/getProdPlugins.js +3 -3
- package/lib/plugins/EFCPlugin.js +28 -12
- package/lib/plugins/ManifestPlugin.js +8 -0
- package/lib/schemas/index.js +2 -0
- package/lib/utils/cssClassNameGenerate.js +9 -2
- package/lib/utils/jsonHelper.js +8 -5
- package/package.json +4 -7
package/README.md
CHANGED
@@ -1,39 +1,68 @@
|
|
1
1
|
# React CLI
|
2
2
|
|
3
3
|
A CLI tool for build modern web application and libraries
|
4
|
+
|
5
|
+
# 0.0.1-exp.161.1
|
6
|
+
|
7
|
+
- Features
|
8
|
+
- feature added for efc cdnStatement
|
9
|
+
- Issue fixes:-
|
10
|
+
- css classname hash change issue fix
|
11
|
+
- debug package conflit issue fix in nock in (react-cli test)
|
12
|
+
- manifest.json css file name correction issue for rtl and ltr
|
13
|
+
|
4
14
|
# 0.0.1-beta.160
|
15
|
+
|
5
16
|
- @zohodesk/normalizer package version updated to 1.0.2
|
17
|
+
|
6
18
|
# 0.0.1-beta.159
|
19
|
+
|
7
20
|
- @zohodesk/datetimejs package updated to beta.7
|
21
|
+
|
22
|
+
# 0.0.1-exp.159
|
23
|
+
|
24
|
+
- isse fix:-
|
25
|
+
- when rtl ltr css split enable manifest json css filename keys comes with hash .
|
26
|
+
|
8
27
|
# 0.0.1-beta.158
|
9
|
-
|
28
|
+
|
29
|
+
- Removing source map files from service worker caching.
|
30
|
+
|
10
31
|
# 0.0.1-beta.157
|
11
|
-
|
32
|
+
|
33
|
+
- Experimental version issue fix(Dummy version removed)
|
34
|
+
|
12
35
|
# 0.0.1-beta.156
|
13
|
-
|
36
|
+
|
37
|
+
- ReportPublish issue fix
|
14
38
|
|
15
39
|
# 0.0.1-beta.155
|
16
|
-
|
40
|
+
|
41
|
+
- get impacted library source files option added
|
17
42
|
|
18
43
|
# 0.0.1-beta.154
|
19
|
-
|
20
|
-
|
21
|
-
|
44
|
+
|
45
|
+
- mockPrefix option for mock url prefix change
|
46
|
+
- Issue fix:-
|
47
|
+
- un wanted {{--js-smap}} in inital html without enable smap in build
|
22
48
|
|
23
49
|
# 0.0.1-beta.153
|
50
|
+
|
24
51
|
- Vendor include array added
|
25
52
|
- If you need to include any thrid party js in vendor we can use this array
|
26
53
|
|
27
54
|
# 0.0.1-beta.152
|
55
|
+
|
28
56
|
impact servise related changes:-
|
57
|
+
|
29
58
|
- nowatchstart option added. will be used like `react-cli nowatchstart <...options>` this will be used for src file changes no need to reflect (or no need to rebulid on file changes)
|
30
59
|
- cssselector_zip option added. will be used like `--cssselector-zip=selectormapping.zip`
|
31
60
|
only work in two ways
|
32
61
|
1. `react-cli start --disable-watch --cssselector-zip=selectormapping.zip` app start command with `--disable-watch` flag and your usaul options
|
33
62
|
2. `react-cli nowatchstart --cssselector-zip=selectormapping.zip` app start command's usaul options
|
34
63
|
#### Urls are:-
|
35
|
-
Below express path are added, For download zip files and
|
36
|
-
- `/zips/${zipname}.zip`
|
64
|
+
Below express path are added, For download zip files and
|
65
|
+
- `/zips/${zipname}.zip` for css selector maps zip file (contains css_map filies and original css files)
|
37
66
|
- `/zips/build.zip` build zip file (contains bundled all files)
|
38
67
|
|
39
68
|
# 0.0.1-beta.151
|
@@ -12,9 +12,6 @@ var _loaderUtils = require("../loaderUtils");
|
|
12
12
|
|
13
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14
14
|
|
15
|
-
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');
|
16
|
-
|
17
|
-
const smp = new SpeedMeasurePlugin();
|
18
15
|
let options = (0, _utils.getOptions)();
|
19
16
|
let {
|
20
17
|
app: {
|
@@ -67,7 +64,7 @@ if (isDevelopment) {
|
|
67
64
|
}
|
68
65
|
|
69
66
|
let shouldRemovePropTypes = !isDevelopment && removePropTypes;
|
70
|
-
module.exports =
|
67
|
+
module.exports = {
|
71
68
|
entry: (0, _common.getEntries)(options, 'production'),
|
72
69
|
devtool: isDevelopment ? 'cheap-module-source-map' : enableSMap ? 'hidden-source-map' : 'none',
|
73
70
|
mode: 'production',
|
@@ -84,7 +81,7 @@ module.exports = smp.wrap({
|
|
84
81
|
stats: {
|
85
82
|
children: false,
|
86
83
|
colors: true,
|
87
|
-
excludeAssets: /i18n
|
84
|
+
// excludeAssets: /i18n/,
|
88
85
|
warningsFilter: /\[mini-css-extract-plugin\]/
|
89
86
|
},
|
90
87
|
plugins: (0, _pluginUtils.getProdPlugins)(options, output.publicPath),
|
@@ -220,4 +217,4 @@ module.exports = smp.wrap({
|
|
220
217
|
resolveLoader: {
|
221
218
|
modules: [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
|
222
219
|
}
|
223
|
-
}
|
220
|
+
};
|
@@ -11,6 +11,8 @@ var _fs = _interopRequireDefault(require("fs"));
|
|
11
11
|
|
12
12
|
var _webpack = _interopRequireDefault(require("webpack"));
|
13
13
|
|
14
|
+
var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
|
15
|
+
|
14
16
|
var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
|
15
17
|
|
16
18
|
var _lodashWebpackPlugin = _interopRequireDefault(require("lodash-webpack-plugin"));
|
@@ -33,7 +35,6 @@ var _RtlCssPlugin = require("../plugins/RtlSplitPlugin/RtlCssPlugin");
|
|
33
35
|
|
34
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
35
37
|
|
36
|
-
// import CaseSensitivePathsPlugin from 'case-sensitive-paths-webpack-plugin';
|
37
38
|
// eslint-disable-next-line no-unused-vars
|
38
39
|
let getProdPlugins = (options, publicPath = '') => {
|
39
40
|
let {
|
@@ -79,8 +80,7 @@ let getProdPlugins = (options, publicPath = '') => {
|
|
79
80
|
const cssRTLFileNameTempalte = `css/[name]${hashTempalate}.rtl.css`;
|
80
81
|
let isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
|
81
82
|
enableChunkHash = !isDevelopment && enableChunkHash;
|
82
|
-
let plugins = [
|
83
|
-
new _webpack.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack.default.DefinePlugin({
|
83
|
+
let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack.default.DefinePlugin({
|
84
84
|
__TEST__: false,
|
85
85
|
__DEVELOPMENT__: false,
|
86
86
|
__LOCAL_PRODUCTION__: isDevelopment,
|
package/lib/plugins/EFCPlugin.js
CHANGED
@@ -34,7 +34,8 @@ const {
|
|
34
34
|
efc: efcOptios
|
35
35
|
} = cliOptions;
|
36
36
|
const {
|
37
|
-
createSDkFile
|
37
|
+
createSDkFile,
|
38
|
+
cdnStatement
|
38
39
|
} = efcOptios;
|
39
40
|
|
40
41
|
class EFCPlugin {
|
@@ -44,7 +45,7 @@ class EFCPlugin {
|
|
44
45
|
this.i18nFileNameTemplate = options.i18nFileNameTemplate; // NOTE: this logic may be needed for i18n splited file name with contenthash cases
|
45
46
|
// this.i18nManifestFileName = options.i18nManifestFileName;
|
46
47
|
// IMPORTANT: here we mergeing optionds from pacakge.json and options via constructor
|
47
|
-
// So when debugging consider this as well
|
48
|
+
// So when debugging consider this as well
|
48
49
|
|
49
50
|
this.options = Object.assign({}, efcOptios, options);
|
50
51
|
this.options.entryPointName = options.entryPointName || 'efc';
|
@@ -125,17 +126,32 @@ class EFCPlugin {
|
|
125
126
|
${enableRTLSplit ? `const cssDir = ${cssDirStatement};` : ''}
|
126
127
|
const prod = !${this.isDevelopment};
|
127
128
|
let cdnVariableName = "${cdnVariableName}";
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
129
|
+
|
130
|
+
function getAssetUrl(ext) {
|
131
|
+
${cdnStatement ? `
|
132
|
+
return (() => {
|
133
|
+
let fu = (${cdnStatement});
|
134
|
+
return typeof fu === "function" ? fu(ext) : fu;
|
135
|
+
})();` : ''}
|
136
|
+
|
137
|
+
${publicPaths.callback ? `return (${publicPaths.callback})(ext)` : ''}
|
138
|
+
|
139
|
+
let assetURLs = {
|
140
|
+
//hook
|
141
|
+
js: ${JSON.stringify(jsPath || serverUrl)},
|
142
|
+
css: ${JSON.stringify(cssPath || serverUrl)},
|
143
|
+
i18n: ${JSON.stringify(i18nJsPath || serverUrl)}
|
144
|
+
};
|
145
|
+
|
146
|
+
return assetURLs[ext];
|
147
|
+
|
148
|
+
}
|
149
|
+
|
134
150
|
|
135
151
|
window.desk_urls={}
|
136
|
-
window.desk_urls.staticDomain = 'https:' +
|
152
|
+
window.desk_urls.staticDomain = 'https:' + getAssetUrl('js') + '/';
|
137
153
|
if (prod && cdnVariableName) {
|
138
|
-
window["${cdnVariableName}"] = 'https:' +
|
154
|
+
window["${cdnVariableName}"] = 'https:' + getAssetUrl('css') + '/';
|
139
155
|
}
|
140
156
|
|
141
157
|
let initalI18nAssets = ${initalI18nAssets}.map(urlpath => "${i18nJsPath}/"+ urlpath);
|
@@ -150,12 +166,12 @@ class EFCPlugin {
|
|
150
166
|
switch(type) {
|
151
167
|
case 'script':
|
152
168
|
case 'i18n':
|
153
|
-
el.src = (type === 'i18n'?
|
169
|
+
el.src = (type === 'i18n'? getAssetUrl('i18n') : getAssetUrl('js'))+'/'+url
|
154
170
|
el.defer = 'defer';
|
155
171
|
document.body.appendChild(el);
|
156
172
|
break;
|
157
173
|
case 'link':
|
158
|
-
el.href =
|
174
|
+
el.href = getAssetUrl('css')+'/'+url${enableRTLSplit ? `.replace(${JSON.stringify(cssDirTemplate)}, cssDir)` : ''}
|
159
175
|
el.rel = 'stylesheet';
|
160
176
|
document.head.appendChild(el);
|
161
177
|
break;
|
@@ -21,6 +21,14 @@ let filenameParser = filename => {
|
|
21
21
|
} = _path.default.parse(hashedName);
|
22
22
|
|
23
23
|
let nameparts = name.split('.');
|
24
|
+
|
25
|
+
if (ext === '.css' && /^(rtl|ltr)$/.test(nameparts[nameparts.length - 1])) {
|
26
|
+
return {
|
27
|
+
name: nameparts.slice(0, nameparts.length - 2).join('.') + ext,
|
28
|
+
hashedName
|
29
|
+
};
|
30
|
+
}
|
31
|
+
|
24
32
|
return {
|
25
33
|
name: nameparts.slice(0, nameparts.length - 1).join('.') + ext,
|
26
34
|
hashedName
|
package/lib/schemas/index.js
CHANGED
@@ -47,6 +47,8 @@ var _default = {
|
|
47
47
|
localeStatement: null,
|
48
48
|
cssDirAttr: 'data-efc-dir',
|
49
49
|
cssDirDefaultValue: 'ltr',
|
50
|
+
cdnStatement: '',
|
51
|
+
// cdnStatement: 'new URL(document.querySelector("script[src*=\'zohodesk-efc-sdk\']").src).origin',
|
50
52
|
cssDirStatement: null
|
51
53
|
},
|
52
54
|
app: {
|
@@ -40,6 +40,13 @@ var _default = (unique = true, {
|
|
40
40
|
filenames,
|
41
41
|
packages
|
42
42
|
}, classNamePrefix) => (context, localIdentName, localName) => {
|
43
|
+
// NOTE: in build macine we use date as folder path.
|
44
|
+
// So every time we create new build there is path will alway different
|
45
|
+
// in order to minmaze that problem we try in relative path;
|
46
|
+
// console.log('context.resourcePath', context.resourcePath, context);
|
47
|
+
// let contextResourcePath = context.resourcePath;
|
48
|
+
let relativePath = _path.default.relative(context.rootContext, context.resourcePath);
|
49
|
+
|
43
50
|
if (context.resourcePath.endsWith('.plain.css')) {
|
44
51
|
return localName;
|
45
52
|
}
|
@@ -47,7 +54,7 @@ var _default = (unique = true, {
|
|
47
54
|
|
48
55
|
|
49
56
|
if (unique) {
|
50
|
-
let h = (0, _getHash.default)(
|
57
|
+
let h = (0, _getHash.default)(`${relativePath}-${localName}`, 10);
|
51
58
|
return `${classNamePrefix}${h}`;
|
52
59
|
}
|
53
60
|
/* old production mode end*/
|
@@ -60,7 +67,7 @@ var _default = (unique = true, {
|
|
60
67
|
//let local = localName.toLowerCase()
|
61
68
|
|
62
69
|
if (isSelectorPackage(context.resourcePath, packages) || filenames.indexOf(cleanFileName) !== -1) {
|
63
|
-
let h = (0, _getHash.default)(
|
70
|
+
let h = (0, _getHash.default)(`${relativePath}-${localName}`, 10);
|
64
71
|
return `${classNamePrefix}${h}`;
|
65
72
|
}
|
66
73
|
|
package/lib/utils/jsonHelper.js
CHANGED
@@ -39,15 +39,14 @@ let fileHandler = {
|
|
39
39
|
}
|
40
40
|
},
|
41
41
|
writeFile: (path, data) => {
|
42
|
-
|
43
|
-
|
44
|
-
return jsonStr;
|
42
|
+
fs.writeFileSync(path, JSON.stringify(data));
|
43
|
+
return JSON.stringify(data);
|
45
44
|
}
|
46
45
|
};
|
47
46
|
exports.fileHandler = fileHandler;
|
48
47
|
|
49
48
|
let jsonConcate = (receiverObj, senterObj) => {
|
50
|
-
Object.keys(senterObj).
|
49
|
+
Object.keys(senterObj).map(key => {
|
51
50
|
if (Object.prototype.hasOwnProperty.call(receiverObj, key)) {
|
52
51
|
if (receiverObj[key].constructor === {}.constructor && senterObj[key].constructor === {}.constructor) {
|
53
52
|
jsonConcate(receiverObj[key], senterObj[key]);
|
@@ -59,6 +58,8 @@ let jsonConcate = (receiverObj, senterObj) => {
|
|
59
58
|
} else {
|
60
59
|
receiverObj[key] = senterObj[key];
|
61
60
|
}
|
61
|
+
|
62
|
+
return key;
|
62
63
|
});
|
63
64
|
return receiverObj;
|
64
65
|
};
|
@@ -72,10 +73,12 @@ let jsonHelper = (path, pathArray, value) => {
|
|
72
73
|
pathArray = pathArray.split('.'); //eslint-disable-line no-param-reassign
|
73
74
|
}
|
74
75
|
|
75
|
-
pathArray.slice(0).reverse().
|
76
|
+
pathArray.slice(0).reverse().map(key => {
|
76
77
|
tempObj = {};
|
77
78
|
tempObj[key] = value;
|
78
79
|
value = tempObj; // eslint-disable-line no-param-reassign
|
80
|
+
|
81
|
+
return key;
|
79
82
|
});
|
80
83
|
let overAllObj = jsonConcate(JSON.parse(fileHandler.readFile(path)), tempObj);
|
81
84
|
fileHandler.writeFile(path, overAllObj);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@zohodesk/react-cli",
|
3
|
-
"version": "0.0.1-exp.
|
3
|
+
"version": "0.0.1-exp.161.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",
|
@@ -55,6 +55,7 @@
|
|
55
55
|
"copy-webpack-plugin": "5.1.2",
|
56
56
|
"core-js": "3.6.5",
|
57
57
|
"css-loader": "4.2.1",
|
58
|
+
"debug": "4.3.3",
|
58
59
|
"escodegen": "2.0.0",
|
59
60
|
"eslint": "7.6.0",
|
60
61
|
"eslint-html-reporter": "0.7.4",
|
@@ -93,9 +94,9 @@
|
|
93
94
|
"postcss-loader": "3.0.0",
|
94
95
|
"postcss-selector-replace": "1.0.2",
|
95
96
|
"prop-types": "15.7.2",
|
96
|
-
"react": "16.
|
97
|
+
"react": "^16.8.6",
|
97
98
|
"react-dev-utils": "10.2.1",
|
98
|
-
"react-dom": "16.
|
99
|
+
"react-dom": "^16.8.6",
|
99
100
|
"react-error-overlay": "6.0.7",
|
100
101
|
"react-redux": "7.2.1",
|
101
102
|
"react-router": "5.2.0",
|
@@ -113,7 +114,6 @@
|
|
113
114
|
"script-loader": "0.7.2",
|
114
115
|
"selectn": "1.1.2",
|
115
116
|
"simple-normalizr": "1.2.5",
|
116
|
-
"speed-measure-webpack-plugin": "1.5.0",
|
117
117
|
"uglifycss": "0.0.29",
|
118
118
|
"url-loader": "4.1.0",
|
119
119
|
"velocity-react": "1.4.3",
|
@@ -141,8 +141,5 @@
|
|
141
141
|
],
|
142
142
|
"@babel/react"
|
143
143
|
]
|
144
|
-
},
|
145
|
-
"devDependencies": {
|
146
|
-
"speed-measure-webpack-plugin": "1.5.0"
|
147
144
|
}
|
148
145
|
}
|