@zohodesk/react-cli 1.1.14-exp.2 → 1.1.14-kubernetes
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
});
|