@zohodesk/react-cli 0.0.1-exp.161.3 → 0.0.1-exp.162.2
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/.eslintrc.js +1 -1
- package/README.md +81 -9
- package/bin/cli.js +50 -2
- package/eslint/NOTES.md +3 -0
- package/eslint/mockapi.html +18 -0
- package/eslint/mockapi.md +5 -0
- package/lib/common/index.js +6 -6
- package/lib/configs/jest.config.js +12 -3
- package/lib/configs/libAlias.js +31 -0
- package/lib/configs/webpack.dev.config.js +6 -19
- package/lib/configs/webpack.prod.config.js +30 -23
- package/lib/loaderUtils/index.js +4 -4
- package/lib/pluginUtils/getDevPlugins.js +2 -0
- package/lib/pluginUtils/getProdPlugins.js +11 -3
- package/lib/pluginUtils/index.js +12 -12
- package/lib/plugins/EFCPlugin.js +43 -13
- package/lib/plugins/EFCTemplatePlugin.js +151 -0
- package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +2 -2
- package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +1 -1
- package/lib/plugins/ManifestPlugin.js +8 -0
- package/lib/plugins/index.js +36 -36
- package/lib/postcss-plugins/RTLSplitPlugin.js +1 -1
- package/lib/schemas/index.js +9 -0
- package/lib/templates/linterConstant.js +1 -1
- package/lib/utils/cssClassNameGenerate.js +9 -2
- package/lib/utils/cssURLReplacer.js +1 -1
- package/lib/utils/getCurrentBranch.js +1 -1
- package/lib/utils/getOptions.js +52 -0
- package/lib/utils/index.js +21 -19
- package/lib/utils/jsonHelper.js +1 -1
- package/lib/utils/reinstallDependencies.js +1 -1
- package/log.log +702 -0
- package/package.json +9 -4
package/lib/plugins/EFCPlugin.js
CHANGED
@@ -17,6 +17,8 @@ var _I18nKeysIdentifer = _interopRequireDefault(require("./I18nSplitPlugin/I18nK
|
|
17
17
|
|
18
18
|
var _replaceCssDirTemplate = require("./RtlSplitPlugin/replaceCssDirTemplate");
|
19
19
|
|
20
|
+
var _EFCTemplatePlugin = _interopRequireDefault(require("./EFCTemplatePlugin"));
|
21
|
+
|
20
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
23
|
|
22
24
|
// import { getShortI18nAssets } from './I18nSplitPlugin/utils/hashUtils';
|
@@ -34,17 +36,19 @@ const {
|
|
34
36
|
efc: efcOptios
|
35
37
|
} = cliOptions;
|
36
38
|
const {
|
37
|
-
createSDkFile
|
39
|
+
createSDkFile,
|
40
|
+
cdnStatement
|
38
41
|
} = efcOptios;
|
39
42
|
|
40
43
|
class EFCPlugin {
|
41
44
|
constructor(options = {}) {
|
42
45
|
this.isDevelopment = options.isDevelopment;
|
46
|
+
this.templateFilePath = options.templateFilePath;
|
43
47
|
this.serverUrl = options.serverUrl;
|
44
48
|
this.i18nFileNameTemplate = options.i18nFileNameTemplate; // NOTE: this logic may be needed for i18n splited file name with contenthash cases
|
45
49
|
// this.i18nManifestFileName = options.i18nManifestFileName;
|
46
50
|
// IMPORTANT: here we mergeing optionds from pacakge.json and options via constructor
|
47
|
-
// So when debugging consider this as well
|
51
|
+
// So when debugging consider this as well
|
48
52
|
|
49
53
|
this.options = Object.assign({}, efcOptios, options);
|
50
54
|
this.options.entryPointName = options.entryPointName || 'efc';
|
@@ -125,20 +129,35 @@ class EFCPlugin {
|
|
125
129
|
${enableRTLSplit ? `const cssDir = ${cssDirStatement};` : ''}
|
126
130
|
const prod = !${this.isDevelopment};
|
127
131
|
let cdnVariableName = "${cdnVariableName}";
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
132
|
+
|
133
|
+
function getAssetUrl(ext) {
|
134
|
+
${cdnStatement ? `
|
135
|
+
return (() => {
|
136
|
+
let fu = (${cdnStatement});
|
137
|
+
return typeof fu === "function" ? fu(ext) : fu;
|
138
|
+
})();` : ''}
|
139
|
+
|
140
|
+
${publicPaths.callback ? `return (${publicPaths.callback})(ext)` : ''}
|
141
|
+
|
142
|
+
let assetURLs = {
|
143
|
+
//hook
|
144
|
+
js: ${JSON.stringify(jsPath || serverUrl)},
|
145
|
+
css: ${JSON.stringify(cssPath || serverUrl)},
|
146
|
+
i18n: ${JSON.stringify(i18nJsPath || serverUrl)}
|
147
|
+
};
|
148
|
+
|
149
|
+
return assetURLs[ext];
|
150
|
+
|
151
|
+
}
|
152
|
+
|
134
153
|
|
135
154
|
window.desk_urls={}
|
136
|
-
window.desk_urls.staticDomain = 'https:' +
|
155
|
+
window.desk_urls.staticDomain = 'https:' + getAssetUrl('js') + '/';
|
137
156
|
if (prod && cdnVariableName) {
|
138
|
-
window["${cdnVariableName}"] = 'https:' +
|
157
|
+
window["${cdnVariableName}"] = 'https:' + getAssetUrl('css') + '/';
|
139
158
|
}
|
140
159
|
|
141
|
-
let initalI18nAssets = ${initalI18nAssets}
|
160
|
+
let initalI18nAssets = ${initalI18nAssets};
|
142
161
|
let initialAssets = initalI18nAssets.concat(${JSON.stringify(enableRTLSplit ? filteredInitialFiles.map(filePath => (0, _replaceCssDirTemplate.replaceCssDirTemplate)(filePath, cssDirTemplate)) : filteredInitialFiles)});
|
143
162
|
|
144
163
|
let loadAsset = (id, type, url) => {
|
@@ -150,12 +169,12 @@ class EFCPlugin {
|
|
150
169
|
switch(type) {
|
151
170
|
case 'script':
|
152
171
|
case 'i18n':
|
153
|
-
el.src = (type === 'i18n'?
|
172
|
+
el.src = (type === 'i18n'? getAssetUrl('i18n') : getAssetUrl('js'))+'/'+url
|
154
173
|
el.defer = 'defer';
|
155
174
|
document.body.appendChild(el);
|
156
175
|
break;
|
157
176
|
case 'link':
|
158
|
-
el.href =
|
177
|
+
el.href = getAssetUrl('css')+'/'+url${enableRTLSplit ? `.replace(${JSON.stringify(cssDirTemplate)}, cssDir)` : ''}
|
159
178
|
el.rel = 'stylesheet';
|
160
179
|
document.head.appendChild(el);
|
161
180
|
break;
|
@@ -186,6 +205,17 @@ class EFCPlugin {
|
|
186
205
|
apply(compiler) {
|
187
206
|
if (!createSDkFile) {
|
188
207
|
return;
|
208
|
+
} //console.log('this.templateFilePath', this.templateFilePath, this.options);
|
209
|
+
|
210
|
+
|
211
|
+
if (this.templateFilePath) {
|
212
|
+
new _EFCTemplatePlugin.default({
|
213
|
+
templateFilePath: this.templateFilePath,
|
214
|
+
publicPath: this.serverUrl,
|
215
|
+
i18nFileNameTemplate: this.i18nFileNameTemplate,
|
216
|
+
entryPointName: this.options.entryPointName
|
217
|
+
}).apply(compiler);
|
218
|
+
return;
|
189
219
|
}
|
190
220
|
|
191
221
|
compiler.hooks.emit.tap('EFCPlugin', compilation => {
|
@@ -0,0 +1,151 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _webpackSources = require("webpack-sources");
|
9
|
+
|
10
|
+
var _utils = require("../utils");
|
11
|
+
|
12
|
+
var _path = _interopRequireDefault(require("path"));
|
13
|
+
|
14
|
+
var _fs = require("fs");
|
15
|
+
|
16
|
+
var _getI18nFileUrlPathTemplate = require("./I18nSplitPlugin/utils/getI18nFileUrlPathTemplate");
|
17
|
+
|
18
|
+
var _I18nKeysIdentifer = _interopRequireDefault(require("./I18nSplitPlugin/I18nKeysIdentifer"));
|
19
|
+
|
20
|
+
var _replaceCssDirTemplate = require("./RtlSplitPlugin/replaceCssDirTemplate");
|
21
|
+
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23
|
+
|
24
|
+
// import { getShortI18nAssets } from './I18nSplitPlugin/utils/hashUtils';
|
25
|
+
const cliOptions = (0, _utils.getOptions)();
|
26
|
+
const {
|
27
|
+
i18n: {
|
28
|
+
chunkSplitEnable
|
29
|
+
},
|
30
|
+
css: {
|
31
|
+
enableRTLSplit
|
32
|
+
},
|
33
|
+
efc: efcOptios
|
34
|
+
} = cliOptions;
|
35
|
+
const {
|
36
|
+
createSDkFile
|
37
|
+
} = efcOptios; // for smap relate changes
|
38
|
+
// CdnChangePlugin
|
39
|
+
// SourceMapHookPlugin
|
40
|
+
|
41
|
+
class EFCTemplatePlugin {
|
42
|
+
constructor(options = {}) {
|
43
|
+
// console.log(' templateFilePath ', process.cwd(), options.templateFilePath, templateFilePath);
|
44
|
+
this.templateFilePath = _path.default.join(process.cwd(), options.templateFilePath); // console.log(' templateFilePath ', this.templateFilePath);
|
45
|
+
|
46
|
+
this.i18nFileNameTemplate = options.i18nFileNameTemplate;
|
47
|
+
this.publicPath = options.publicPath; // NOTE: this logic may be needed for i18n splited file name with contenthash cases
|
48
|
+
// this.i18nManifestFileName = options.i18nManifestFileName;
|
49
|
+
// IMPORTANT: here we mergeing optionds from pacakge.json and options via constructor
|
50
|
+
// So when debugging consider this as well
|
51
|
+
// this.options = Object.assign({}, efcOptios, options);
|
52
|
+
|
53
|
+
this.entryPointName = options.entryPointName || 'efc';
|
54
|
+
this.outputFile = efcOptios.outputFile.replace('[version]', efcOptios.version);
|
55
|
+
} // NOTE: this logic may be needed for i18n splited file name with contenthash cases
|
56
|
+
// getI18nManifest(compilation) {
|
57
|
+
// const i18nManifestFile =
|
58
|
+
// compilation.assets[this.options.i18nManifestFileName];
|
59
|
+
// if (i18nManifestFile) {
|
60
|
+
// const manifest = JSON.parse(i18nManifestFile.source());
|
61
|
+
// return manifest;
|
62
|
+
// }
|
63
|
+
// return {};
|
64
|
+
// }
|
65
|
+
|
66
|
+
|
67
|
+
getI18nAssetsStr(entryPoint, compilation) {
|
68
|
+
// NOTE: we have used lang variable inside
|
69
|
+
if (!chunkSplitEnable) {
|
70
|
+
let i18nAsstes = {};
|
71
|
+
let i18nFiles = Object.keys(compilation.assets).filter(assert => assert.indexOf(`i18n${_path.default.sep}`) !== -1); //hook for i18n url contains i18n/ may cause problem
|
72
|
+
|
73
|
+
i18nAsstes = i18nFiles.reduce((res, i18nFilePath) => {
|
74
|
+
let fileName = i18nFilePath.replace(`i18n${_path.default.sep}`, '');
|
75
|
+
let splittedFileName = fileName.split('.');
|
76
|
+
res[splittedFileName[0]] = i18nFilePath;
|
77
|
+
return res;
|
78
|
+
}, {});
|
79
|
+
return `[${JSON.stringify(i18nAsstes)}[lang]]`;
|
80
|
+
}
|
81
|
+
|
82
|
+
let initalI18nAssets = entryPoint.chunks.filter(chunk => _I18nKeysIdentifer.default.isChunkHasI18n(chunk)).map(chunk => (0, _getI18nFileUrlPathTemplate.getI18nFileUrlPathTemplate)(compilation, chunk, this.i18nFileNameTemplate, '@locale@'));
|
83
|
+
return `${JSON.stringify(initalI18nAssets)}.map(urlpath => urlpath.replace(/@locale@/g, lang))`;
|
84
|
+
}
|
85
|
+
|
86
|
+
templateReplacer(entryPoint, compilation) {
|
87
|
+
const cssDirTemplate = '@dir@'; // const i18nManifest = this.getI18nManifest(compilation);
|
88
|
+
|
89
|
+
const initialFiles = entryPoint.getFiles();
|
90
|
+
const filteredInitialFiles = initialFiles.filter(file => /\.(css|js)$/.test(file));
|
91
|
+
const initialJsFiles = filteredInitialFiles.filter(file => /\.js$/.test(file));
|
92
|
+
let initialCssFiles = filteredInitialFiles.filter(file => /\.css$/.test(file));
|
93
|
+
|
94
|
+
if (enableRTLSplit) {
|
95
|
+
initialCssFiles = initialCssFiles.map(filePath => (0, _replaceCssDirTemplate.replaceCssDirTemplate)(filePath, cssDirTemplate));
|
96
|
+
} // const i18nAssets = getShortI18nAssets(
|
97
|
+
// entryPoint.chunks,
|
98
|
+
// i18nManifest,
|
99
|
+
// '' // i18nJsPath
|
100
|
+
// );
|
101
|
+
|
102
|
+
|
103
|
+
const initalI18nAssets = this.getI18nAssetsStr(entryPoint, compilation, '' // i18nJsPath
|
104
|
+
);
|
105
|
+
let templateStr = (0, _fs.readFileSync)(this.templateFilePath).toString();
|
106
|
+
return templateStr.replace('((\'getInitalAssets\'))', `function getInitalAssets(assetsType, lang) {
|
107
|
+
if (assetsType === "js") {
|
108
|
+
return ${JSON.stringify(initialJsFiles)}
|
109
|
+
}
|
110
|
+
if (assetsType === "css") {
|
111
|
+
return ${JSON.stringify(initialCssFiles)}
|
112
|
+
}
|
113
|
+
if (assetsType === "i18n") {
|
114
|
+
return ${initalI18nAssets};
|
115
|
+
}
|
116
|
+
return [];
|
117
|
+
}`).replace('((\'@dir@\'))', '\'@dir@\'').replace('((\'publicPath\'))', this.publicPath).replace('((\'@locale@\'))', '\'@locale@\'');
|
118
|
+
}
|
119
|
+
|
120
|
+
apply(compiler) {
|
121
|
+
if (!createSDkFile) {
|
122
|
+
return;
|
123
|
+
}
|
124
|
+
|
125
|
+
compiler.hooks.emit.tap('EFCTemplatePlugin', compilation => {
|
126
|
+
const {
|
127
|
+
entryPointName,
|
128
|
+
outputFile
|
129
|
+
} = this;
|
130
|
+
const entryPoint = compilation.entrypoints.get(entryPointName);
|
131
|
+
|
132
|
+
if (!entryPoint) {
|
133
|
+
return;
|
134
|
+
}
|
135
|
+
|
136
|
+
if (!(0, _fs.existsSync)(this.templateFilePath)) {
|
137
|
+
console.error(`EFC Template file not exists ${this.templateFilePath}`);
|
138
|
+
return;
|
139
|
+
}
|
140
|
+
|
141
|
+
const source = new _webpackSources.RawSource(this.templateReplacer(entryPoint, compilation));
|
142
|
+
compilation.assets[outputFile] = source; // console.log('EFCTemplatePlugin working');
|
143
|
+
// eslint-disable-next-line no-console
|
144
|
+
|
145
|
+
console.log('The EFC embedded code was created successfully..!!!');
|
146
|
+
});
|
147
|
+
}
|
148
|
+
|
149
|
+
}
|
150
|
+
|
151
|
+
exports.default = EFCTemplatePlugin;
|
@@ -3,9 +3,9 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.hasContentHash = hasContentHash;
|
7
|
-
exports.getShortI18nAssets = getShortI18nAssets;
|
8
6
|
exports.REGEXP_CONTENTHASH = void 0;
|
7
|
+
exports.getShortI18nAssets = getShortI18nAssets;
|
8
|
+
exports.hasContentHash = hasContentHash;
|
9
9
|
|
10
10
|
var _urlConcat = require("../../../utils/urlConcat");
|
11
11
|
|
@@ -3,8 +3,8 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.getPropertiesAsJSON = getPropertiesAsJSON;
|
7
6
|
exports.getAllI18n = getAllI18n;
|
7
|
+
exports.getPropertiesAsJSON = getPropertiesAsJSON;
|
8
8
|
exports.jsonToString = jsonToString;
|
9
9
|
|
10
10
|
var _fs = require("fs");
|
@@ -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/plugins/index.js
CHANGED
@@ -3,88 +3,82 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
Object.defineProperty(exports, "
|
7
|
-
enumerable: true,
|
8
|
-
get: function () {
|
9
|
-
return _ModuleStatsPlugin.default;
|
10
|
-
}
|
11
|
-
});
|
12
|
-
Object.defineProperty(exports, "SourceMapHookPlugin", {
|
6
|
+
Object.defineProperty(exports, "CdnChangePlugin", {
|
13
7
|
enumerable: true,
|
14
8
|
get: function () {
|
15
|
-
return
|
9
|
+
return _CdnChangePlugin.default;
|
16
10
|
}
|
17
11
|
});
|
18
|
-
Object.defineProperty(exports, "
|
12
|
+
Object.defineProperty(exports, "CleanUpStatsPlugin", {
|
19
13
|
enumerable: true,
|
20
14
|
get: function () {
|
21
|
-
return
|
15
|
+
return _CleanupStatsPlugin.default;
|
22
16
|
}
|
23
17
|
});
|
24
|
-
Object.defineProperty(exports, "
|
18
|
+
Object.defineProperty(exports, "EFCPlugin", {
|
25
19
|
enumerable: true,
|
26
20
|
get: function () {
|
27
|
-
return
|
21
|
+
return _EFCPlugin.default;
|
28
22
|
}
|
29
23
|
});
|
30
|
-
Object.defineProperty(exports, "
|
24
|
+
Object.defineProperty(exports, "I18NInjectIntoIndexPlugin", {
|
31
25
|
enumerable: true,
|
32
26
|
get: function () {
|
33
|
-
return
|
27
|
+
return _I18NInjectIntoIndexPlugin.default;
|
34
28
|
}
|
35
29
|
});
|
36
|
-
Object.defineProperty(exports, "
|
30
|
+
Object.defineProperty(exports, "ManifestPlugin", {
|
37
31
|
enumerable: true,
|
38
32
|
get: function () {
|
39
|
-
return
|
33
|
+
return _ManifestPlugin.default;
|
40
34
|
}
|
41
35
|
});
|
42
|
-
Object.defineProperty(exports, "
|
36
|
+
Object.defineProperty(exports, "ModuleStatsPlugin", {
|
43
37
|
enumerable: true,
|
44
38
|
get: function () {
|
45
|
-
return
|
39
|
+
return _ModuleStatsPlugin.default;
|
46
40
|
}
|
47
41
|
});
|
48
|
-
Object.defineProperty(exports, "
|
42
|
+
Object.defineProperty(exports, "OptimizeJSPlugin", {
|
49
43
|
enumerable: true,
|
50
44
|
get: function () {
|
51
|
-
return
|
45
|
+
return _OptimizeJSPlugin.default;
|
52
46
|
}
|
53
47
|
});
|
54
|
-
Object.defineProperty(exports, "
|
48
|
+
Object.defineProperty(exports, "PublicPathCallbackPlugin", {
|
55
49
|
enumerable: true,
|
56
50
|
get: function () {
|
57
|
-
return
|
51
|
+
return _PublicPathCallbackPlugin.default;
|
58
52
|
}
|
59
53
|
});
|
60
|
-
Object.defineProperty(exports, "
|
54
|
+
Object.defineProperty(exports, "PublicPathChangePlugin", {
|
61
55
|
enumerable: true,
|
62
56
|
get: function () {
|
63
|
-
return
|
57
|
+
return _PublicPathChangePlugin.default;
|
64
58
|
}
|
65
59
|
});
|
66
|
-
Object.defineProperty(exports, "
|
60
|
+
Object.defineProperty(exports, "ReportGeneratePlugin", {
|
67
61
|
enumerable: true,
|
68
62
|
get: function () {
|
69
|
-
return
|
63
|
+
return _ReportGeneratePlugin.default;
|
70
64
|
}
|
71
65
|
});
|
72
|
-
Object.defineProperty(exports, "
|
66
|
+
Object.defineProperty(exports, "ResourceHintsPlugin", {
|
73
67
|
enumerable: true,
|
74
68
|
get: function () {
|
75
|
-
return
|
69
|
+
return _ResourceHintsPlugin.default;
|
76
70
|
}
|
77
71
|
});
|
78
|
-
Object.defineProperty(exports, "
|
72
|
+
Object.defineProperty(exports, "ScriptInstrumentPlugin", {
|
79
73
|
enumerable: true,
|
80
74
|
get: function () {
|
81
|
-
return
|
75
|
+
return _ScriptInstrumentPlugin.default;
|
82
76
|
}
|
83
77
|
});
|
84
|
-
Object.defineProperty(exports, "
|
78
|
+
Object.defineProperty(exports, "ServiceWorkerPlugin", {
|
85
79
|
enumerable: true,
|
86
80
|
get: function () {
|
87
|
-
return
|
81
|
+
return _ServiceWorkerPlugin.default;
|
88
82
|
}
|
89
83
|
});
|
90
84
|
Object.defineProperty(exports, "ShadowDOMSupportPlugin", {
|
@@ -93,10 +87,10 @@ Object.defineProperty(exports, "ShadowDOMSupportPlugin", {
|
|
93
87
|
return _ShadowDOMSupportPlugin.default;
|
94
88
|
}
|
95
89
|
});
|
96
|
-
Object.defineProperty(exports, "
|
90
|
+
Object.defineProperty(exports, "SourceMapHookPlugin", {
|
97
91
|
enumerable: true,
|
98
92
|
get: function () {
|
99
|
-
return
|
93
|
+
return _SourceMapHookPlugin.default;
|
100
94
|
}
|
101
95
|
});
|
102
96
|
Object.defineProperty(exports, "TPHashMappingPlugin", {
|
@@ -105,10 +99,16 @@ Object.defineProperty(exports, "TPHashMappingPlugin", {
|
|
105
99
|
return _TPHashMappingPlugin.default;
|
106
100
|
}
|
107
101
|
});
|
108
|
-
Object.defineProperty(exports, "
|
102
|
+
Object.defineProperty(exports, "UglifyCSSPlugin", {
|
109
103
|
enumerable: true,
|
110
104
|
get: function () {
|
111
|
-
return
|
105
|
+
return _UglifyCSSPlugin.default;
|
106
|
+
}
|
107
|
+
});
|
108
|
+
Object.defineProperty(exports, "UnusedFilesFindPlugin", {
|
109
|
+
enumerable: true,
|
110
|
+
get: function () {
|
111
|
+
return _UnusedFilesFindPlugin.default;
|
112
112
|
}
|
113
113
|
});
|
114
114
|
|
@@ -3,8 +3,8 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.separateSingleDir = separateSingleDir;
|
7
6
|
exports.separateRtlAndLtr = separateRtlAndLtr;
|
7
|
+
exports.separateSingleDir = separateSingleDir;
|
8
8
|
|
9
9
|
var postcss = _interopRequireWildcard(require("postcss"));
|
10
10
|
|
package/lib/schemas/index.js
CHANGED
@@ -18,6 +18,12 @@ var _default = {
|
|
18
18
|
value: null,
|
19
19
|
cli: 'ssl_cert_url'
|
20
20
|
},
|
21
|
+
preprocessor: {
|
22
|
+
runner: {
|
23
|
+
value: '',
|
24
|
+
cli: 'preprocessor'
|
25
|
+
}
|
26
|
+
},
|
21
27
|
i18n: {
|
22
28
|
chunkSplitEnable: {
|
23
29
|
value: false,
|
@@ -42,11 +48,14 @@ var _default = {
|
|
42
48
|
nameScope: 'ZOHODESK',
|
43
49
|
version: 'default',
|
44
50
|
outputFile: 'zohodesk-efc-sdk-[version].js',
|
51
|
+
templateFilePath: '',
|
45
52
|
localeAttr: 'data-efc-locale',
|
46
53
|
localeDefaultValue: 'en_US',
|
47
54
|
localeStatement: null,
|
48
55
|
cssDirAttr: 'data-efc-dir',
|
49
56
|
cssDirDefaultValue: 'ltr',
|
57
|
+
cdnStatement: '',
|
58
|
+
// cdnStatement: "new URL(document.querySelector(\"script[src*='zohodesk-efc-sdk']\").src).origin",
|
50
59
|
cssDirStatement: null
|
51
60
|
},
|
52
61
|
app: {
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
6
|
+
exports.htmlTemplate = exports.endTag = void 0;
|
7
7
|
const htmlTemplate = '<!DOCTYPE html><html> <head> <title>Eslint Security Rule</title> <style type="text/css"> body{margin: 0; font: 93.75%/1.6 -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif;}body, html{width: 100%; height: 100%;}.pkCont{}.pkEmpty{height: 300px;display: flex;align-items: center;justify-content: center;font-size: 20px;}.pkUl{margin: 0; padding: 0; list-style-type: none;}.pkLi{}.pkRow{display: flex; padding: 12px 16px;}.pkArrowCont{cursor: pointer; width: 50px; display: flex; align-items: center; justify-content: center; background-color: #f4f5f5; border-radius: 4px;}.pkArrow{width: 1px; height: 1px; border: 5px solid; border-color: #000 transparent transparent; margin-top: 7px;}.pkDetailsOpen .pkArrow{margin: 0 0 7px; border-color: transparent transparent #000;}.pkFileName{font-weight: 600; margin: 0 8px;}.pkUrl{flex: 1; min-width: 0; min-height: 0; word-break: break-word; word-wrap: break-word; color: blue;}.pkDetails{margin-left: 66px; display: none;}.pkDetailsOpen .pkDetails{display: block;}.pkDetailsHead{font-weight: 600; display: flex; border: 1px solid #e5e5e5; padding: 3px 8px;}.pkDetailsBody{max-height: 400px; overflow: auto;}.pkDetailsRow{display: flex; padding: 10px 8px;}.pkDetailsRow:nth-child(even){background-color: #f4f5f5;}.pkDetailsCol{word-break: break-word; word-wrap: break-word;}.pkError{color: red;}.pkDetailsCol:nth-child(1){width: 10%;}.pkDetailsCol:nth-child(2){width: 10%;}.pkDetailsCol:nth-child(3){width: 40%;}.pkDetailsCol:nth-child(4){width: 40%;}</style> <script>function toggleWrapper(element){var classArray=element.parentElement.parentElement.className; if (classArray.includes("pkDetailsOpen")){element.parentElement.parentElement.className="pkLi";}else{element.parentElement.parentElement.className="pkLi pkDetailsOpen";}}</script> </head> <body> <div class="pkCont">';
|
8
8
|
exports.htmlTemplate = htmlTemplate;
|
9
9
|
const endTag = '</div></body></html>';
|
@@ -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
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
6
|
+
exports.getUrls = exports.getFileType = exports.cssUrlReplacer = void 0;
|
7
7
|
|
8
8
|
var _fs = _interopRequireDefault(require("fs"));
|
9
9
|
|
@@ -22,7 +22,7 @@ var _default = (type = 'git', cwd = process.cwd()) => {
|
|
22
22
|
});
|
23
23
|
}
|
24
24
|
|
25
|
-
let [currentBranch] = results.output.filter(d => d);
|
25
|
+
let [currentBranch] = results && results.output ? results.output.filter(d => d) : [''];
|
26
26
|
return currentBranch.replace(/(\r\n|\n|\r)/gm, '');
|
27
27
|
};
|
28
28
|
|
package/lib/utils/getOptions.js
CHANGED
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.default = void 0;
|
7
7
|
|
8
|
+
var _child_process = require("child_process");
|
9
|
+
|
8
10
|
var _fs = _interopRequireDefault(require("fs"));
|
9
11
|
|
10
12
|
var _path = _interopRequireDefault(require("path"));
|
@@ -13,6 +15,9 @@ var _schemas = _interopRequireDefault(require("../schemas"));
|
|
13
15
|
|
14
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
17
|
|
18
|
+
// import { argv } from 'process';
|
19
|
+
let args = process.argv.slice(2); // console.log('argv', argv);
|
20
|
+
|
16
21
|
const NPM_CONFIG_PREFIX = 'npm_config_'; // TODO: we have to do option parse logic little better
|
17
22
|
// if user use react-cli stritly without using npm scripts options won't work,
|
18
23
|
// So we have to write our own option parse logic or some other library
|
@@ -37,6 +42,51 @@ keysWithColon.forEach(key => {
|
|
37
42
|
processEnv[nkey] = processEnv[key];
|
38
43
|
});
|
39
44
|
|
45
|
+
function getNpmVersion() {
|
46
|
+
// require("child_process").
|
47
|
+
let vers = '6';
|
48
|
+
|
49
|
+
try {
|
50
|
+
[vers] = (0, _child_process.execSync)('npm -v').toString().trim().split('.');
|
51
|
+
} catch (error) {
|
52
|
+
console.log(error);
|
53
|
+
}
|
54
|
+
|
55
|
+
return vers;
|
56
|
+
}
|
57
|
+
|
58
|
+
function getCWD() {
|
59
|
+
// require("child_process").
|
60
|
+
let cwd = process.cwd();
|
61
|
+
|
62
|
+
try {
|
63
|
+
let ress = (0, _child_process.execSync)('npm bin').toString();
|
64
|
+
let i = ress.lastIndexOf('node_modules');
|
65
|
+
cwd = i === -1 ? cwd : ress.slice(0, ress.lastIndexOf('node_modules'));
|
66
|
+
} catch (error) {
|
67
|
+
console.log(error);
|
68
|
+
}
|
69
|
+
|
70
|
+
return cwd;
|
71
|
+
}
|
72
|
+
|
73
|
+
args.forEach(option => {
|
74
|
+
if (/^--./.test(option)) {
|
75
|
+
let equIndex = option.indexOf('='); // equIndex = equIndex === -1 ? option.length : equIndex;
|
76
|
+
|
77
|
+
let key = option.slice(2, equIndex);
|
78
|
+
let value = option.slice(equIndex + 1);
|
79
|
+
|
80
|
+
if (equIndex === -1) {
|
81
|
+
key = option.slice(2);
|
82
|
+
value = true;
|
83
|
+
}
|
84
|
+
|
85
|
+
key = key.replace(/-/g, '_').replace(/:/g, '_');
|
86
|
+
processEnv[key] = value;
|
87
|
+
}
|
88
|
+
});
|
89
|
+
|
40
90
|
let defaulter = (target, source) => {
|
41
91
|
let defaultObject = {};
|
42
92
|
Object.keys(target).forEach(key => {
|
@@ -88,6 +138,8 @@ let getOptions = () => {
|
|
88
138
|
}
|
89
139
|
|
90
140
|
let options = defaulter(_schemas.default, userSchemas || {});
|
141
|
+
options.npmVersion = getNpmVersion();
|
142
|
+
options.cwd = getCWD();
|
91
143
|
options.packageVersion = process.env.npm_package_version;
|
92
144
|
global.reactCLIOptions = options;
|
93
145
|
return options;
|