@zohodesk/react-cli 1.1.14-exp.2 → 1.1.14-kubernetes
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 +16 -281
- package/bin/cli.js +55 -30
- package/docs/CustomChunks.md +9 -12
- package/docs/SelectorWeight.md +0 -3
- package/docs/ValueReplacer.md +0 -27
- package/docs/VariableConversion.md +1 -6
- package/lib/common/splitChunks.js +45 -65
- package/lib/common/testPattern.js +11 -9
- package/lib/common/valueReplacer.js +3 -1
- package/lib/configs/resolvers.js +5 -16
- package/lib/configs/webpack.css.umd.config.js +2 -3
- package/lib/configs/webpack.dev.config.js +5 -15
- package/lib/configs/webpack.docs.config.js +3 -14
- package/lib/configs/webpack.impact.config.js +2 -8
- package/lib/configs/webpack.prod.config.js +5 -15
- package/lib/constants.js +3 -3
- package/lib/loaderUtils/getCSSLoaders.js +49 -98
- package/lib/loaderUtils/windowsModification.js +1 -6
- package/lib/loaders/docsLoader.js +7 -18
- package/lib/loaders/selectorMappingLoader.js +9 -9
- package/lib/pluginUtils/getDevPlugins.js +6 -25
- package/lib/pluginUtils/getProdPlugins.js +5 -32
- package/lib/pluginUtils/getUMDCSSPlugins.js +1 -1
- package/lib/pluginUtils/getUMDComponentPlugins.js +1 -1
- package/lib/plugins/EFCPlugin.js +9 -9
- package/lib/plugins/EFCTemplatePlugin.js +12 -10
- package/lib/plugins/I18NInjectIntoIndexPlugin.js +9 -8
- package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +3 -2
- package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +13 -29
- package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +7 -2
- package/lib/plugins/I18nSplitPlugin/index.js +1 -1
- package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +8 -8
- package/lib/plugins/ReportGeneratePlugin.js +6 -8
- package/lib/plugins/ResourceHintsPlugin.js +3 -13
- package/lib/plugins/SelectorPlugin.js +37 -77
- package/lib/plugins/{MinifyPlugin.js → UglifyCSSPlugin.js} +3 -3
- package/lib/plugins/UnusedFilesFindPlugin.js +5 -7
- package/lib/plugins/VariableConversionCollector.js +101 -40
- package/lib/plugins/composeCommonPlugin.js +30 -0
- package/lib/plugins/index.js +7 -7
- package/lib/postcss-plugins/ExcludePlugin.js +1 -1
- package/lib/postcss-plugins/RTLSplitPlugin.js +10 -4
- package/lib/postcss-plugins/ValueReplacer.js +29 -8
- package/lib/postcss-plugins/hoverActivePlugin.js +6 -0
- package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +1 -0
- package/lib/postcss-plugins/variableModificationPlugin/index.js +38 -94
- package/lib/postcss-plugins/variableModifier.js +244 -0
- package/lib/schemas/index.js +18 -94
- package/lib/servers/devBuild.js +11 -13
- package/lib/servers/getCliPath.js +5 -3
- package/lib/servers/httpsOptions.js +13 -12
- package/lib/servers/nowatchserver.js +55 -62
- package/lib/servers/server.js +52 -53
- package/lib/utils/cssClassNameGenerate.js +13 -70
- package/lib/utils/getOptions.js +28 -35
- package/lib/utils/getServerURL.js +9 -1
- package/lib/utils/index.js +12 -14
- package/lib/utils/initPreCommitHook.js +5 -5
- package/lib/utils/pullOrigin.js +3 -3
- package/lib/utils/reinstallDependencies.js +3 -3
- package/lib/utils/switchBranch.js +2 -4
- package/package.json +3 -5
- package/templates/docs/all.html +0 -1
- package/templates/docs/component.html +0 -1
- package/templates/docs/components.html +0 -1
- package/templates/docs/css/style.css +169 -136
- package/templates/docs/index.html +632 -796
- package/.vscode/settings.json +0 -25
- package/docs/ComposeMinification.md +0 -13
- package/docs/MarkdownParser.md +0 -18
- package/docs/ReactLive.md +0 -14
- package/docs/patternFiltering.md +0 -57
- package/lib/common/buildEs.js +0 -12
- package/lib/common/runPreProcess.js +0 -71
- package/lib/deprecationLogger.js +0 -40
- package/lib/loaderUtils/tests/windowsModification.test.js +0 -10
- package/lib/loaders/__test__/markdownLoader.spec.js +0 -145
- package/lib/loaders/composeLoader.js +0 -298
- package/lib/loaders/markdownLoader.js +0 -71
- package/lib/loaders/reactLiveConvertor.js +0 -105
- package/lib/logger.js +0 -27
- package/lib/plugins/CustomAttributePlugin.js +0 -82
- package/lib/plugins/CustomAttributePlugin.md +0 -35
- package/lib/plugins/EfcResourceCleanupPlugin.js +0 -43
- package/lib/plugins/StatsPlugin.js +0 -82
- package/lib/plugins/utils/classHandling.js +0 -35
- package/lib/plugins/utils/fileHandling.js +0 -92
- package/lib/plugins/utils/tests/fileHandling.test.js +0 -30
- package/lib/plugins/variableConvertorUtils.js +0 -133
- package/lib/postcss-plugins/EmptyPlugin.js +0 -8
- package/lib/postcss-plugins/IncludePlugin.js +0 -23
- package/lib/postcss-plugins/SelectorReplace.js +0 -80
- package/lib/postcss-plugins/__test__/selectorReplace.test.js +0 -28
- package/lib/postcss-plugins/__test__/valueReplacer.spec.js +0 -43
- package/lib/servers/requireLocalOrGlobal.js +0 -61
- package/lib/utils/deprecationSupport.js +0 -134
- package/lib/utils/log.js +0 -11
- package/lib/utils/object-manipulation.js +0 -88
- package/lib/utils/selectorReplacer.js +0 -47
- package/lib/utils/variableConverter.js +0 -104
- package/npm-shrinkwrap.json +0 -33485
- package/templates/docs/css/markdown.css +0 -202
@@ -22,7 +22,7 @@ var _getI18nFileUrlPathTemplate = require("./I18nSplitPlugin/utils/getI18nFileUr
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23
23
|
|
24
24
|
let i18nObj = null;
|
25
|
-
|
25
|
+
let options = (0, _utils.getOptions)();
|
26
26
|
|
27
27
|
function newAssign(target, data) {
|
28
28
|
return Object.assign({}, target, data);
|
@@ -43,7 +43,7 @@ class I18NInjectIntoIndexPlugin {
|
|
43
43
|
}
|
44
44
|
|
45
45
|
getI18nFileUrlPath(chunk, compilation) {
|
46
|
-
|
46
|
+
let urlpath = (0, _getI18nFileUrlPathTemplate.getI18nFileUrlPathTemplate)(compilation, chunk, this.i18nFileNameTemplate, this.templateLabel);
|
47
47
|
return (0, _urlConcat.urlConcat)(this.publicPath, urlpath);
|
48
48
|
}
|
49
49
|
|
@@ -81,6 +81,7 @@ class I18NInjectIntoIndexPlugin {
|
|
81
81
|
withI18nSpitHandling(compiler) {
|
82
82
|
compiler.hooks.make.tap('I18NInjectIntoIndexPlugin', compilation => {
|
83
83
|
// let cdns = Object.keys(this.publicPaths);
|
84
|
+
// console.log('compilation.assets', Object.keys(compilation.assets).filter(a => a.includes('i18n')));
|
84
85
|
if (!(0, _hashUtils.hasContentHash)(this.i18nFileNameTemplate)) {
|
85
86
|
this.injectI18nURLsToHTML(compilation);
|
86
87
|
return;
|
@@ -90,7 +91,7 @@ class I18NInjectIntoIndexPlugin {
|
|
90
91
|
// Manipulate the content
|
91
92
|
const i18nManifest = this.getI18nManifest(compilation);
|
92
93
|
const entryPoint = compilation.entrypoints.get(this.entryPointName);
|
93
|
-
|
94
|
+
let i18nAssets = (0, _hashUtils.getShortI18nAssets)(entryPoint.chunks, i18nManifest, this.publicPath);
|
94
95
|
data.html = data.html.replace(new RegExp('<!--I18nInfoToServer(.*?)I18nInfoToServer-->', 'g'), (match, arg) => match.replace(arg, JSON.stringify(i18nAssets))); // Tell webpack to move on
|
95
96
|
|
96
97
|
cb(null, data);
|
@@ -110,11 +111,11 @@ class I18NInjectIntoIndexPlugin {
|
|
110
111
|
compiler.hooks.emit.tap('I18NInjectIntoIndexPlugin', compilation => {
|
111
112
|
// let cdns = Object.keys(this.publicPaths);
|
112
113
|
if (i18nObj === null) {
|
113
|
-
|
114
|
+
let i18nFiles = Object.keys(compilation.assets).filter(assert => assert.indexOf(`i18n${_path.default.sep}`) !== -1); //hook for i18n url contains i18n/ may cause problem
|
114
115
|
|
115
116
|
i18nObj = i18nFiles.reduce((res, next) => {
|
116
|
-
|
117
|
-
|
117
|
+
let fileName = next.replace(`i18n${_path.default.sep}`, '');
|
118
|
+
let splittedFileName = fileName.split('.');
|
118
119
|
/* if (this.isDevelopment) {
|
119
120
|
res[splittedFileName[0]] = `${this.publicPath}/i18n/${fileName}`;
|
120
121
|
} else {
|
@@ -126,10 +127,10 @@ class I18NInjectIntoIndexPlugin {
|
|
126
127
|
}, {});
|
127
128
|
}
|
128
129
|
|
129
|
-
|
130
|
+
let [indexFile] = Object.keys(compilation.assets).filter(filename => /\.html$/g.test(filename));
|
130
131
|
|
131
132
|
if (indexFile) {
|
132
|
-
|
133
|
+
let source = compilation.assets[indexFile].source();
|
133
134
|
compilation.assets[indexFile] = new _webpackSources.RawSource(source.replace(new RegExp('<!--I18nInfoToServer(.*)I18nInfoToServer-->', 'g'), (match, arg) => match.replace(arg, JSON.stringify(i18nObj))));
|
134
135
|
}
|
135
136
|
});
|
@@ -24,9 +24,10 @@ class I18nDebugPlugin {
|
|
24
24
|
compiler.hooks.normalModuleFactory.tap(pluginName, factory => {
|
25
25
|
if (!this.compilationParams || this.compilationParams.normalModuleFactory === factory) {
|
26
26
|
return;
|
27
|
-
}
|
27
|
+
} // console.log('skiped');
|
28
28
|
|
29
|
-
|
29
|
+
|
30
|
+
let handler = parser => {
|
30
31
|
parser.hooks.program.tap(pluginName, (ast, commmets) => {
|
31
32
|
const {
|
32
33
|
module
|
@@ -184,15 +184,15 @@ class I18nDownlodLogic {
|
|
184
184
|
|
185
185
|
const buf = [];
|
186
186
|
/*
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
187
|
+
if (REGEXP_HASH.test(filenameTemplate)) {
|
188
|
+
buf.push(
|
189
|
+
`var hash = ${mainTemplate.renderCurrentHashCode(hash)};`
|
190
|
+
);
|
191
|
+
}
|
192
|
+
if (REGEXP_CHUNKHASH.test(filenameTemplate)) {
|
193
|
+
buf.push(`var chunkHashes = ${JSON.stringify(chunkMaps.hash)};`);
|
194
|
+
}
|
195
|
+
*/
|
196
196
|
|
197
197
|
if ((0, _hashUtils.hasContentHash)(filenameTemplate)) {
|
198
198
|
const hashLength = getContentHashMaxLength(filenameTemplate);
|
@@ -205,18 +205,12 @@ class I18nDownlodLogic {
|
|
205
205
|
|
206
206
|
const publicPath = this.publicPath ? JSON.stringify(this.publicPath) : `${mainTemplate.requireFn}.p`;
|
207
207
|
return _webpack.Template.asString([source, `
|
208
|
-
function
|
208
|
+
(function() {
|
209
209
|
// ${pluginName} I18N loading
|
210
210
|
var i18nChunks = ${JSON.stringify(chunkMap)};
|
211
211
|
var locale = ${localeVarName};
|
212
212
|
// ${pluginName} I18N hasehes
|
213
213
|
${hashUtils}
|
214
|
-
if(chunkName) {
|
215
|
-
chunkId = chunkName;
|
216
|
-
}
|
217
|
-
if (language) {
|
218
|
-
locale = language;
|
219
|
-
}
|
220
214
|
if(installedI18nChunks[chunkId]) {
|
221
215
|
promises.push(installedI18nChunks[chunkId]);
|
222
216
|
} else if(installedI18nChunks[chunkId] !== 0 && i18nChunks[chunkId]) {
|
@@ -251,19 +245,10 @@ function downloadScriptTagForI18nDynamicChunks(chunkName = '', language = '') {
|
|
251
245
|
}` : ''}
|
252
246
|
document.body.appendChild(scriptTag);
|
253
247
|
}).then(function() {
|
254
|
-
installedI18nChunks[chunkId] = 0;
|
248
|
+
installedI18nChunks[chunkId] = 0;
|
255
249
|
}));
|
256
250
|
}
|
257
|
-
};
|
258
|
-
downloadScriptTagForI18nDynamicChunks();
|
259
|
-
${mainTemplate.requireFn}.changeLanguage = function changeLanguage(language) {
|
260
|
-
window.userLangCode=language;
|
261
|
-
Object.keys(installedI18nChunks).map(chunks => {
|
262
|
-
if (chunks !== './runtime~main' && installedI18nChunks[chunks] == 0) {
|
263
|
-
installedI18nChunks[chunks] = null;
|
264
|
-
downloadScriptTagForI18nDynamicChunks(chunks, language);
|
265
|
-
}
|
266
|
-
});}`]);
|
251
|
+
})()`]);
|
267
252
|
});
|
268
253
|
}
|
269
254
|
|
@@ -271,8 +256,7 @@ downloadScriptTagForI18nDynamicChunks();
|
|
271
256
|
compiler.hooks.thisCompilation.tap(pluginName, compilation => {
|
272
257
|
const {
|
273
258
|
mainTemplate
|
274
|
-
} = compilation;
|
275
|
-
|
259
|
+
} = compilation;
|
276
260
|
this.addDownloadLogicOfI18nInMainTemplate(mainTemplate);
|
277
261
|
});
|
278
262
|
}
|
@@ -40,7 +40,7 @@ class I18nKeysIdentifer {
|
|
40
40
|
identifier,
|
41
41
|
i18nKeys
|
42
42
|
}, module.context, 0);
|
43
|
-
module.addDependency(dep);
|
43
|
+
module.addDependency(dep); // console.log('module', i18nKeys, identifier);
|
44
44
|
}
|
45
45
|
|
46
46
|
apply(compiler) {
|
@@ -50,7 +50,7 @@ class I18nKeysIdentifer {
|
|
50
50
|
// and we must define how it import statement look like I18nDependencyTemplate
|
51
51
|
this.defineConfigarationForI18nDependency(compilation); // handler for parser
|
52
52
|
|
53
|
-
|
53
|
+
let handler = parser => {
|
54
54
|
parser.hooks.program.tap(pluginName, (ast, commmets) => {
|
55
55
|
const {
|
56
56
|
module
|
@@ -66,6 +66,11 @@ class I18nKeysIdentifer {
|
|
66
66
|
(0, _utils.collectI18nKeysfromComments)(commmets, this.jsResourceI18nKeys));
|
67
67
|
|
68
68
|
if (i18nKeys.length) {
|
69
|
+
// console.log(
|
70
|
+
// 'i18nKeys.length',
|
71
|
+
// module.resource,
|
72
|
+
// i18nKeys.length < 5 ? i18nKeys : i18nKeys.length
|
73
|
+
// );
|
69
74
|
this.addI18nDependency(module, i18nKeys);
|
70
75
|
}
|
71
76
|
});
|
@@ -11,8 +11,6 @@ var _fs = require("fs");
|
|
11
11
|
|
12
12
|
var _path = require("path");
|
13
13
|
|
14
|
-
var _logger = require("../../../logger");
|
15
|
-
|
16
14
|
function isComment(line) {
|
17
15
|
return line[0] === '#';
|
18
16
|
}
|
@@ -20,7 +18,7 @@ function isComment(line) {
|
|
20
18
|
function getPropertiesAsJSON(filePath) {
|
21
19
|
try {
|
22
20
|
const data = (0, _fs.readFileSync)(filePath);
|
23
|
-
|
21
|
+
let source = data.toString();
|
24
22
|
const i18nObj = {};
|
25
23
|
source.split(/\r?\n\r?/).forEach(fline => {
|
26
24
|
const line = fline.trim();
|
@@ -44,7 +42,7 @@ function getPropertiesAsJSON(filePath) {
|
|
44
42
|
}
|
45
43
|
|
46
44
|
function getLang(file) {
|
47
|
-
|
45
|
+
let underScoreIndex = file.indexOf('_');
|
48
46
|
let language = 'en_US';
|
49
47
|
|
50
48
|
if (underScoreIndex !== -1) {
|
@@ -70,24 +68,26 @@ function getAllI18n({
|
|
70
68
|
const filePath = (0, _path.join)(context, file);
|
71
69
|
|
72
70
|
if (exclude.test(filePath) || !include.test(filePath)) {
|
71
|
+
// console.log('exclude', filePath);
|
73
72
|
return;
|
74
|
-
}
|
73
|
+
} // console.log('include', filePath);
|
74
|
+
|
75
75
|
|
76
76
|
const i18n = getPropertiesAsJSON(filePath);
|
77
77
|
allLangI18n[getLang(file)] = disableDefault ? i18n : Object.assign({}, jsResourceI18nKeys, i18n);
|
78
78
|
});
|
79
79
|
return allLangI18n;
|
80
80
|
} catch (err) {
|
81
|
-
|
81
|
+
// console.log(err);
|
82
82
|
return {};
|
83
83
|
}
|
84
84
|
}
|
85
85
|
|
86
86
|
function jsonToString(json, keySeperator) {
|
87
87
|
let str = '{';
|
88
|
-
|
88
|
+
let keys = Object.keys(json);
|
89
89
|
keys.forEach((key, i) => {
|
90
|
-
|
90
|
+
let value = json[key];
|
91
91
|
|
92
92
|
if (!value) {
|
93
93
|
return;
|
@@ -13,8 +13,6 @@ var _redis = _interopRequireDefault(require("redis"));
|
|
13
13
|
|
14
14
|
var _utils = require("../utils");
|
15
15
|
|
16
|
-
var _log = require("../utils/log");
|
17
|
-
|
18
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
19
17
|
|
20
18
|
let options = (0, _utils.getOptions)();
|
@@ -70,10 +68,10 @@ class reportGeneratePlugin {
|
|
70
68
|
let client = _redis.default.createClient(redisPort, redisHost);
|
71
69
|
|
72
70
|
client.on('connect', () => {
|
73
|
-
(0,
|
71
|
+
(0, _utils.log)('Redis client connected');
|
74
72
|
});
|
75
73
|
client.on('error', err => {
|
76
|
-
(0,
|
74
|
+
(0, _utils.log)(`Something went wrong ${err}`);
|
77
75
|
});
|
78
76
|
|
79
77
|
if (_fs.default.existsSync(_path.default.resolve(process.cwd(), 'build', 'stats.json'))) {
|
@@ -82,7 +80,7 @@ class reportGeneratePlugin {
|
|
82
80
|
statsJSON = JSON.parse(statsJSON);
|
83
81
|
let finalObj = {};
|
84
82
|
let branchName = branch ? branch : (0, _utils.getCurrentBranch)();
|
85
|
-
(0,
|
83
|
+
(0, _utils.log)(branchName);
|
86
84
|
statsJSON.assets.forEach(assetObj => {
|
87
85
|
let nameSplitList = assetObj.name.split('/')[assetObj.name.split('/').length - 1].split('.'); // eslint-disable-line
|
88
86
|
|
@@ -113,7 +111,7 @@ class reportGeneratePlugin {
|
|
113
111
|
};
|
114
112
|
client.get(branchName, (err, reply) => {
|
115
113
|
if (err) {
|
116
|
-
(0,
|
114
|
+
(0, _utils.log)(err);
|
117
115
|
} else {
|
118
116
|
reply = JSON.parse(reply); // eslint-disable-line
|
119
117
|
|
@@ -149,7 +147,7 @@ class reportGeneratePlugin {
|
|
149
147
|
throw err;
|
150
148
|
}
|
151
149
|
|
152
|
-
(0,
|
150
|
+
(0, _utils.log)('Stats Json generated!');
|
153
151
|
});
|
154
152
|
}
|
155
153
|
});
|
@@ -171,7 +169,7 @@ class reportGeneratePlugin {
|
|
171
169
|
}
|
172
170
|
|
173
171
|
if (err) {
|
174
|
-
(0,
|
172
|
+
(0, _utils.log)(err);
|
175
173
|
}
|
176
174
|
});
|
177
175
|
}
|
@@ -12,21 +12,14 @@ const {
|
|
12
12
|
const pluginName = 'prefetch-preload-chunk-plugin';
|
13
13
|
|
14
14
|
class ResourceHintsPlugin {
|
15
|
-
constructor(options) {
|
16
|
-
this.options = options;
|
17
|
-
}
|
18
|
-
|
19
15
|
apply(compiler) {
|
20
16
|
compiler.hooks.thisCompilation.tap(pluginName, ({
|
21
17
|
mainTemplate
|
22
18
|
}) => {
|
23
19
|
mainTemplate.hooks.requireExtensions.tap(pluginName, (source, chunk, hash) => {
|
24
|
-
const {
|
25
|
-
allowPrefetchingMultipleChunks
|
26
|
-
} = this.options;
|
27
20
|
const idNameMap = chunk.getChunkMaps().name;
|
28
21
|
const nameIdMap = {};
|
29
|
-
let needsMap =
|
22
|
+
let needsMap = false;
|
30
23
|
|
31
24
|
for (const key in idNameMap) {
|
32
25
|
if (Object.prototype.hasOwnProperty.call(idNameMap, key)) {
|
@@ -39,10 +32,7 @@ class ResourceHintsPlugin {
|
|
39
32
|
}
|
40
33
|
}
|
41
34
|
|
42
|
-
return Template.asString([source, Template.indent([`
|
43
|
-
return isRegExAsChunkId ? chunkNames.filter(chunkName => chunkId.test(chunkName)).map(chunkName => nameToChunkIdMap[chunkName]) : [nameToChunkIdMap[chunkId] || chunkId];` : needsMap ? 'return [nameToChunkIdMap[chunkId] || chunkId];' : 'return [chunkId];']), '}', `// Prefetch a chunk (${pluginName})`, `${mainTemplate.requireFn}.pfc = function prefetchChunk(chunkId) {`, Template.indent([`let chunkIds = ${mainTemplate.requireFn}.getChunkIds(chunkId)`, `chunkIds.forEach(idOfAChunk => {
|
44
|
-
${mainTemplate.requireFn}.e(idOfAChunk);
|
45
|
-
})`]), '};',
|
35
|
+
return Template.asString([source, '', `${mainTemplate.requireFn}.getChunkId = function getChunkId(chunkId) {`, Template.indent((needsMap ? [`chunkId = ${JSON.stringify(nameIdMap)}[chunkId]||chunkId;`] : []).concat(['return chunkId;'])), '}', `// Prefetch a chunk (${pluginName})`, `${mainTemplate.requireFn}.pfc = function prefetchChunk(chunkId) {`, Template.indent([`chunkId = ${mainTemplate.requireFn}.getChunkId(chunkId)`, `${mainTemplate.requireFn}.e(chunkId);`]), '};',
|
46
36
|
/*
|
47
37
|
(needsMap
|
48
38
|
? [`chunkId = ${JSON.stringify(nameIdMap)}[chunkId]||chunkId;`]
|
@@ -63,7 +53,7 @@ class ResourceHintsPlugin {
|
|
63
53
|
),
|
64
54
|
'}',
|
65
55
|
*/
|
66
|
-
`// Preload a chunk (${pluginName})`, `${mainTemplate.requireFn}.plc = function preloadChunk(chunkId) {`, Template.indent([`chunkId = ${mainTemplate.requireFn}.
|
56
|
+
`// Preload a chunk (${pluginName})`, `${mainTemplate.requireFn}.plc = function preloadChunk(chunkId) {`, Template.indent([`chunkId = ${mainTemplate.requireFn}.getChunkId(chunkId)`, 'if(installedChunks[chunkId] === undefined) {', Template.indent(['installedChunks[chunkId] = null;', mainTemplate.hooks.linkPreload.call('', chunk, hash), 'document.head.appendChild(link);', `${mainTemplate.requireFn}.e(chunkId);` // 'var head = document.getElementsByTagName(\'head\')[0];',
|
67
57
|
// mainTemplate.hooks.jsonpScript.call('', chunk, hash),
|
68
58
|
// 'head.appendChild(script);'
|
69
59
|
]), '}']), '};']);
|
@@ -9,53 +9,51 @@ var _postcss = _interopRequireDefault(require("postcss"));
|
|
9
9
|
|
10
10
|
var _fs = _interopRequireDefault(require("fs"));
|
11
11
|
|
12
|
-
var
|
12
|
+
var _webpackSources = require("webpack-sources");
|
13
13
|
|
14
|
-
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
15
|
|
16
|
-
|
16
|
+
const path = require('path');
|
17
17
|
|
18
|
-
|
18
|
+
const isCss = filename => path.extname(filename) === '.css';
|
19
19
|
|
20
|
-
function
|
20
|
+
function rootConvertor(rootOriginal, defaultSelector, data, chunkFilename, excludeStrings) {
|
21
21
|
rootOriginal.walkRules((rule, index) => {
|
22
|
-
const prevNode = rootOriginal.nodes[index - 1]
|
22
|
+
const prevNode = rootOriginal.nodes[index - 1];
|
23
23
|
|
24
|
-
if (
|
24
|
+
if (index !== 0 && prevNode.type && prevNode.type === 'comment' && prevNode.text.toLowerCase() === 'updateselector:ignore') {
|
25
25
|
return;
|
26
|
-
}
|
27
|
-
|
26
|
+
}
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
if (excludeStrings.includes(singleSelectorStr.trim())) {
|
28
|
+
if (rule.parent && rule.parent.type === 'atrule') {
|
29
|
+
if (rule.parent.name !== 'media') {
|
32
30
|
return;
|
33
|
-
}
|
34
|
-
|
31
|
+
}
|
32
|
+
}
|
35
33
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
const selectorPart = singleSelectorStr.slice(singleSelectorStr.lastIndexOf(']') + 1).trim();
|
34
|
+
if (excludeStrings.includes(rule.selector)) {
|
35
|
+
return;
|
36
|
+
}
|
40
37
|
|
41
|
-
|
38
|
+
let ruleArr = rule.selector.split(',');
|
39
|
+
ruleArr.forEach((rule, index) => {
|
40
|
+
if (rule.includes(']')) {
|
41
|
+
if (rule.slice(rule.lastIndexOf(']') + 2).trim() === '') {
|
42
42
|
return;
|
43
|
-
}
|
43
|
+
} // console.log(
|
44
|
+
// rule.slice(rule.lastIndexOf(']') + 2).trim(),
|
45
|
+
// rule.slice(rule.lastIndexOf(']') + 2).trim() !== ''
|
46
|
+
// );
|
44
47
|
|
45
|
-
if (/^:/gi.test(selectorPart)) {
|
46
|
-
return;
|
47
|
-
}
|
48
48
|
|
49
|
-
|
50
|
-
selectorArr[index] = `${prefixPart} ${selector}${selectorPart}`;
|
51
|
-
}
|
49
|
+
ruleArr[index] = `${rule.slice(0, rule.lastIndexOf(']') + 1).trim()} ${defaultSelector}${rule.slice(rule.lastIndexOf(']') + 2).trim()}`; // console.log(ruleArr[index]);
|
52
50
|
|
53
51
|
return;
|
54
52
|
}
|
55
53
|
|
56
|
-
|
54
|
+
ruleArr[index] = data[chunkFilename] ? `${data[chunkFilename].defaultSelector}${rule}` : `${defaultSelector}${rule}`;
|
57
55
|
});
|
58
|
-
rule.selector =
|
56
|
+
rule.selector = ruleArr.join(',\n'); // console.log(`${rule.selector} converted`);
|
59
57
|
});
|
60
58
|
return rootOriginal;
|
61
59
|
}
|
@@ -64,8 +62,6 @@ class SelectorPlugin {
|
|
64
62
|
constructor(options = {}) {
|
65
63
|
this.optimize = options.optimize;
|
66
64
|
this.selectorWeightConfig = options.selectorWeightConfig;
|
67
|
-
this.exclude = options.exclude;
|
68
|
-
this.patterns = options.patterns;
|
69
65
|
}
|
70
66
|
|
71
67
|
apply(compiler) {
|
@@ -78,55 +74,19 @@ class SelectorPlugin {
|
|
78
74
|
const rawdata = _fs.default.readFileSync(customFileDetails);
|
79
75
|
|
80
76
|
const data = JSON.parse(rawdata);
|
81
|
-
this.exclude = (0, _windowsModification.windowsModification)(this.exclude);
|
82
77
|
compiler.hooks.compilation.tap('selector-weight-rewrite', compilation => {
|
83
|
-
compilation.hooks.
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
patterns.cssVariableReplacement:
|
94
|
-
// include src folder, include deskapp folder, exclude node modules
|
95
|
-
"selectorWeight": [
|
96
|
-
"src",
|
97
|
-
"deskapp",
|
98
|
-
"!node_modules"
|
99
|
-
]
|
100
|
-
|
101
|
-
output :
|
102
|
-
true or false
|
103
|
-
*/
|
104
|
-
|
105
|
-
if (!(0, _fileHandling.isFileNameMatchingPluginPattern)({
|
106
|
-
filename,
|
107
|
-
filterArr: this.patterns.selectorWeight
|
108
|
-
})) {
|
109
|
-
return;
|
110
|
-
}
|
111
|
-
/*
|
112
|
-
|
113
|
-
filename : Deskapp.module.css ?
|
114
|
-
data :
|
115
|
-
{
|
116
|
-
"DeskApp.module.css": {"defaultSelector" : ".desk_app_ui "}
|
117
|
-
}
|
118
|
-
selectorWeightConfig :
|
119
|
-
defaultSelector : .zoho_desk_ui
|
120
|
-
|
121
|
-
case filename = 'DeskApp.module.css' ?
|
122
|
-
data[filename].defaultSelector = '.desk_app_ui'
|
123
|
-
case filename is different ?
|
124
|
-
defaultSelector = '.zoho_desk_ui'
|
125
|
-
*/
|
126
|
-
|
127
|
-
|
128
|
-
module.content = selectorWeightPrefixAdder(rootOriginal, data[filename] ? data[filename].defaultSelector : defaultSelector, excludeStrings).toString();
|
78
|
+
compilation.hooks.optimizeChunkAssets.tapAsync('selector-weight-rewrite', (chunks, callback) => {
|
79
|
+
chunks.forEach(chunk => {
|
80
|
+
chunk.files.filter(isCss).forEach(chunkFilename => {
|
81
|
+
const asset = compilation.assets[chunkFilename];
|
82
|
+
const sourceStr = asset.source();
|
83
|
+
|
84
|
+
const rootOriginal = _postcss.default.parse(sourceStr);
|
85
|
+
|
86
|
+
compilation.assets[chunkFilename] = new _webpackSources.RawSource(rootConvertor(rootOriginal, defaultSelector, data, chunkFilename, excludeStrings).toString());
|
87
|
+
});
|
129
88
|
});
|
89
|
+
callback();
|
130
90
|
});
|
131
91
|
});
|
132
92
|
}
|
@@ -11,9 +11,9 @@ var _uglifycss = _interopRequireDefault(require("uglifycss"));
|
|
11
11
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
13
|
|
14
|
-
class
|
14
|
+
class UglifyCSSPlugin {
|
15
15
|
apply(compiler) {
|
16
|
-
compiler.hooks.emit.tap('
|
16
|
+
compiler.hooks.emit.tap('UglifyCSSPlugin', compilation => {
|
17
17
|
Object.keys(compilation.assets).forEach(filename => {
|
18
18
|
if (/\.css$/.test(filename)) {
|
19
19
|
try {
|
@@ -36,4 +36,4 @@ class MinifierPlugin {
|
|
36
36
|
|
37
37
|
}
|
38
38
|
|
39
|
-
exports.default =
|
39
|
+
exports.default = UglifyCSSPlugin;
|
@@ -11,8 +11,6 @@ var _fs = _interopRequireDefault(require("fs"));
|
|
11
11
|
|
12
12
|
var _utils = require("../utils");
|
13
13
|
|
14
|
-
var _log = require("../utils/log");
|
15
|
-
|
16
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
15
|
|
18
16
|
let excludeDocsJSON = '{}';
|
@@ -99,10 +97,10 @@ class UnusedFilesFindPlugin {
|
|
99
97
|
Object.keys(unDocsCompObj).forEach(key => {
|
100
98
|
if (unDocsCompObj[key].length > 0) {
|
101
99
|
if (key === 'withoutDocs') {
|
102
|
-
(0,
|
100
|
+
(0, _utils.log)('\x1b[36m%s\x1b[0m', '\nPlease write docs file for below componenst :- \n');
|
103
101
|
unDocsCompObj[key].forEach(value => {
|
104
102
|
if (!excludeDocsArray.docs.exclude.includes(value)) {
|
105
|
-
(0,
|
103
|
+
(0, _utils.log)('\x1b[33m%s\x1b[0m', `${value}`);
|
106
104
|
}
|
107
105
|
});
|
108
106
|
}
|
@@ -164,10 +162,10 @@ class UnusedFilesFindPlugin {
|
|
164
162
|
});
|
165
163
|
|
166
164
|
if (!unusedFiles.length) {
|
167
|
-
(0,
|
165
|
+
(0, _utils.log)('There is no unused files');
|
168
166
|
} else {
|
169
167
|
if (this.outputFileName) {
|
170
|
-
(0,
|
168
|
+
(0, _utils.log)(`You can see unused files info from ${_path.default.join(outputPath, this.outputFileName)} path`);
|
171
169
|
(0, _utils.makeDir)(outputPath);
|
172
170
|
(0, _utils.writeFile)(_path.default.join(outputPath, this.outputFileName), JSON.stringify(unusedFiles)).then(() => {
|
173
171
|
if (this.sstest) {
|
@@ -181,7 +179,7 @@ class UnusedFilesFindPlugin {
|
|
181
179
|
unusedFiles.forEach(file => {
|
182
180
|
_fs.default.unlinkSync(file);
|
183
181
|
|
184
|
-
(0,
|
182
|
+
(0, _utils.log)(`Deleted - ${file}`);
|
185
183
|
});
|
186
184
|
}
|
187
185
|
});
|