@zohodesk/react-cli 0.0.1-exp.169.2 → 0.0.1-exp.175.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/.eslintignore +7 -7
- package/.eslintrc.js +180 -179
- package/.prettierrc +6 -6
- package/README.md +1028 -951
- package/bin/cli.js +483 -483
- package/cert/Tsicsezwild-22-23.crt +37 -37
- package/cert/Tsicsezwild-22-23.key +27 -27
- package/docs/CustomChunks.md +26 -26
- package/docs/DevStart.md +18 -18
- package/docs/HoverActive.md +12 -12
- package/docs/InstallNode.md +28 -28
- package/docs/TODOS.md +10 -10
- package/docs/ValueReplacer.md +60 -60
- package/docs/VariableConversion.md +678 -0
- package/docs/warnings_while_install.txt +35 -35
- package/files/eslintrc.js +62 -62
- package/files/prettierrc.js +3 -3
- package/lib/babel/cmjs-plugins-presets.js +0 -4
- package/lib/babel/es-plugins-presets.js +0 -4
- package/lib/common/getEntries.js +0 -10
- package/lib/common/getPublicPathConfig.js +0 -6
- package/lib/common/index.js +0 -5
- package/lib/common/splitChunks.js +2 -13
- package/lib/common/sslcertUpdater.js +6 -17
- package/lib/common/templateParameters.js +0 -2
- package/lib/common/testPattern.js +10 -21
- package/lib/common/valueReplacer.js +0 -15
- package/lib/configs/jest.config.js +8 -21
- package/lib/configs/libAlias.js +11 -2
- package/lib/configs/webpack.component.umd.config.js +0 -5
- package/lib/configs/webpack.css.umd.config.js +5 -13
- package/lib/configs/webpack.dev.config.js +13 -24
- package/lib/configs/webpack.docs.config.js +6 -12
- package/lib/configs/webpack.impact.config.js +6 -10
- package/lib/configs/webpack.prod.config.js +15 -26
- package/lib/hooks/docsProptypeHook.js +3 -7
- package/lib/jest/commitedFilesResult.js +3 -45
- package/lib/jest/coverageCollector.js +0 -11
- package/lib/jest/jsonMaker.js +0 -6
- package/lib/jest/preProcessors/cssPreprocessor.js +14 -13
- package/lib/jest/preProcessors/jsPreprocessor.js +0 -2
- package/lib/jest/preProcessors/otherFilesPreprocessor.js +0 -3
- package/lib/jest/result.js +0 -22
- package/lib/jest/run.js +6 -17
- package/lib/jest/setup.js +5 -57
- package/lib/loaderUtils/configsAssetsLoaders.js +34 -44
- package/lib/loaderUtils/getCSSLoaders.js +41 -28
- package/lib/loaderUtils/getDevJsLoaders.js +0 -8
- package/lib/loaderUtils/index.js +0 -3
- package/lib/loaders/docsLoader.js +0 -7
- package/lib/loaders/docsPropsLoader.js +3 -7
- package/lib/loaders/fileBountryLoader.js +0 -2
- package/lib/loaders/fileLoader.js +11 -22
- package/lib/loaders/scriptInstrumentLoader.js +5 -13
- package/lib/loaders/selectorMappingLoader.js +7 -25
- package/lib/loaders/workerLoader.js +13 -29
- package/lib/middlewares/HMRMiddleware.js +13 -26
- package/lib/middlewares/SSTMiddleware.js +0 -3
- package/lib/pluginUtils/configHtmlWebpackPlugins.js +53 -0
- package/lib/pluginUtils/getDevPlugins.js +20 -64
- package/lib/pluginUtils/getDocsPlugins.js +1 -10
- package/lib/pluginUtils/getLibraryImactPlugins.js +4 -5
- package/lib/pluginUtils/getLibraryPlugins.js +0 -5
- package/lib/pluginUtils/getProdPlugins.js +32 -78
- package/lib/pluginUtils/getServerPlugins.js +0 -5
- package/lib/pluginUtils/getUMDCSSPlugins.js +0 -7
- package/lib/pluginUtils/getUMDComponentPlugins.js +0 -7
- package/lib/pluginUtils/index.js +0 -8
- package/lib/plugins/CdnChangePlugin.js +0 -14
- package/lib/plugins/CleanupStatsPlugin.js +0 -5
- package/lib/plugins/EFCPlugin.js +23 -34
- package/lib/plugins/EFCPlugin.md +6 -6
- package/lib/plugins/EFCTemplatePlugin.js +23 -32
- package/lib/plugins/I18NInjectIntoIndexPlugin.js +12 -38
- package/lib/plugins/I18nSplitPlugin/I18nDebugPlugin.js +12 -17
- package/lib/plugins/I18nSplitPlugin/I18nDependency.js +4 -10
- package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +46 -77
- package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +44 -59
- package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +21 -30
- package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
- package/lib/plugins/I18nSplitPlugin/README.md +25 -25
- package/lib/plugins/I18nSplitPlugin/index.js +70 -80
- package/lib/plugins/I18nSplitPlugin/utils/collectI18nKeys.js +2 -12
- package/lib/plugins/I18nSplitPlugin/utils/getI18nFileUrlPathTemplate.js +0 -1
- package/lib/plugins/I18nSplitPlugin/utils/getI18nKeysFormModules.js +0 -5
- package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +0 -6
- package/lib/plugins/I18nSplitPlugin/utils/index.js +0 -4
- package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +2 -20
- package/lib/plugins/ManifestPlugin.js +0 -17
- package/lib/plugins/ModuleStatsPlugin.js +0 -23
- package/lib/plugins/OptimizeJSPlugin.js +0 -7
- package/lib/plugins/PublicPathCallbackPlugin.js +0 -10
- package/lib/plugins/PublicPathChangePlugin.js +4 -36
- package/lib/plugins/ReportGeneratePlugin.js +4 -30
- package/lib/plugins/RequireVariablePublicPlugin.js +0 -6
- package/lib/plugins/ResourceHintsPlugin.js +20 -27
- package/lib/plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +12 -17
- package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +23 -38
- package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
- package/lib/plugins/RtlSplitPlugin/replaceCssDirTemplate.js +2 -5
- package/lib/plugins/ScriptInstrumentPlugin.js +0 -7
- package/lib/plugins/ServiceWorkerPlugin.js +13 -29
- package/lib/plugins/ShadowDOMSupportPlugin.js +3 -40
- package/lib/plugins/SourceMapHookPlugin.js +0 -9
- package/lib/plugins/TPHashMappingPlugin.js +5 -19
- package/lib/plugins/UglifyCSSPlugin.js +0 -9
- package/lib/plugins/UnusedFilesFindPlugin.js +2 -35
- package/lib/plugins/index.js +0 -19
- package/lib/plugins/libraryImpactPlugin.js +0 -32
- package/lib/plugins/webpackwatchrunplugin.js +0 -5
- package/lib/postcss-plugins/ExcludePlugin.js +0 -4
- package/lib/postcss-plugins/RTLSplitPlugin.js +24 -37
- package/lib/postcss-plugins/ValueReplacer.js +9 -6
- package/lib/postcss-plugins/__test__/hoverActivePlugin.spec.js +0 -3
- package/lib/postcss-plugins/__test__/test1Input.css +38 -38
- package/lib/postcss-plugins/__test__/test1Output.css +38 -38
- package/lib/postcss-plugins/hoverActivePlugin.js +80 -92
- package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +31 -0
- package/lib/postcss-plugins/variableModificationPlugin/index.js +232 -0
- package/lib/postcss-plugins/variableModifier.js +14 -20
- package/lib/schemas/index.js +28 -13
- package/lib/servers/clusterHubServer.js +0 -10
- package/lib/servers/devBuild.js +13 -24
- package/lib/servers/docsServer.js +0 -2
- package/lib/servers/docsServerCore.js +0 -21
- package/lib/servers/getCliPath.js +1 -10
- package/lib/servers/helpServer.js +0 -5
- package/lib/servers/httpsOptions.js +0 -4
- package/lib/servers/impactServer.js +2 -34
- package/lib/servers/mockserver.js +0 -9
- package/lib/servers/nowatchserver.js +12 -34
- package/lib/servers/scrServer.js +13 -20
- package/lib/servers/server.js +7 -35
- package/lib/servers/ssServer.js +0 -16
- package/lib/sh/pre-commit.sh +34 -34
- package/lib/sh/reportPublish.sh +45 -45
- package/lib/templates/CoverageScriptTemplate.js +0 -14
- package/lib/templates/WMSTemplate.js +6 -12
- package/lib/utils/babelPresets.js +0 -2
- package/lib/utils/buildstats.html +148 -148
- package/lib/utils/clean.js +2 -8
- package/lib/utils/copy.js +0 -6
- package/lib/utils/copyTimezones.js +0 -8
- package/lib/utils/createEventStream.js +0 -4
- package/lib/utils/cssClassNameGenerate.js +3 -19
- package/lib/utils/cssURLReplacer.js +0 -25
- package/lib/utils/dependencyPostPublish.js +0 -9
- package/lib/utils/fileUtils.js +0 -26
- package/lib/utils/folderIterator.js +0 -10
- package/lib/utils/getComponents.js +0 -21
- package/lib/utils/getCurrentBranch.js +0 -5
- package/lib/utils/getDependenciesImpactList.js +0 -21
- package/lib/utils/getHash.js +0 -7
- package/lib/utils/getIp.js +0 -2
- package/lib/utils/getOptions.js +38 -35
- package/lib/utils/getServerURL.js +0 -7
- package/lib/utils/index.js +2 -47
- package/lib/utils/init.js +0 -1
- package/lib/utils/initPreCommitHook.js +6 -29
- package/lib/utils/jsonHelper.js +2 -19
- package/lib/utils/libraryImpactConfig.js +0 -2
- package/lib/utils/lint/addScripts.js +2 -5
- package/lib/utils/lint/checkExistingConfig.js +3 -12
- package/lib/utils/lint/copyConfigs.js +0 -3
- package/lib/utils/lint/index.js +0 -9
- package/lib/utils/lint/lintScripts.js +0 -1
- package/lib/utils/lint/lintSetup.js +3 -4
- package/lib/utils/lint/lintStagedPreCommitHook.js +0 -1
- package/lib/utils/lint/question.js +0 -7
- package/lib/utils/lintReporter.js +0 -20
- package/lib/utils/mailSender.js +0 -7
- package/lib/utils/pullOrigin.js +0 -4
- package/lib/utils/reinstallDependencies.js +0 -28
- package/lib/utils/removeAttributes.js +0 -7
- package/lib/utils/repoClone.js +2 -27
- package/lib/utils/request.js +0 -12
- package/lib/utils/resultSchema.json +73 -73
- package/lib/utils/rtl.js +4 -16
- package/lib/utils/setEnvVariables.js +0 -2
- package/lib/utils/ssTestHack.js +0 -10
- package/lib/utils/switchBranch.js +0 -4
- package/lib/utils/urlConcat.js +0 -4
- package/lib/utils/useExitCleanup.js +9 -10
- package/npm8.md +9 -9
- package/package.json +146 -148
- package/postpublish.js +6 -6
- package/templates/app/.eslintrc.js +140 -140
- package/templates/app/README.md +12 -12
- package/templates/app/app/index.html +24 -24
- package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
- package/templates/app/app/properties/i18nkeys.json +3 -3
- package/templates/app/docs/all.html +69 -69
- package/templates/app/mockapi/index.js +18 -18
- package/templates/app/package.json +37 -37
- package/templates/app/src/actions/SampleActions/index.js +37 -37
- package/templates/app/src/actions/index.js +65 -65
- package/templates/app/src/appUrls.js +19 -19
- package/templates/app/src/components/Alert/Alert.js +134 -134
- package/templates/app/src/components/Alert/Alert.module.css +79 -79
- package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
- package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
- package/templates/app/src/components/Sample/Sample.module.css +11 -11
- package/templates/app/src/components/Sample/SampleList.js +61 -61
- package/templates/app/src/components/Slider/Slider.css +41 -41
- package/templates/app/src/components/Slider/Slider.js +55 -55
- package/templates/app/src/containers/AlertContainer/index.js +15 -15
- package/templates/app/src/containers/AppContainer/index.js +96 -96
- package/templates/app/src/containers/AppContainer/index.module.css +27 -27
- package/templates/app/src/containers/CustomMatch/index.js +65 -65
- package/templates/app/src/containers/DevTools/index.js +10 -10
- package/templates/app/src/containers/Header/index.js +67 -67
- package/templates/app/src/containers/Header/index.module.css +43 -43
- package/templates/app/src/containers/Redirect/index.js +63 -63
- package/templates/app/src/containers/Redirector/index.js +47 -47
- package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
- package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
- package/templates/app/src/historyChange.js +5 -5
- package/templates/app/src/index.html +10 -10
- package/templates/app/src/index.js +24 -24
- package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
- package/templates/app/src/reducers/alertData.js +11 -11
- package/templates/app/src/reducers/index.js +6 -6
- package/templates/app/src/reducers/samples.js +19 -19
- package/templates/app/src/store/configureStore.dev.js +51 -51
- package/templates/app/src/store/configureStore.js +5 -5
- package/templates/app/src/store/configureStore.prod.js +26 -26
- package/templates/app/src/util/Common.js +5 -5
- package/templates/app/src/util/RequestAPI.js +132 -132
- package/templates/docs/all.html +249 -249
- package/templates/docs/component.html +178 -178
- package/templates/docs/components.html +221 -221
- package/templates/docs/css/b.min.css +6 -6
- package/templates/docs/css/component.css +42 -42
- package/templates/docs/css/componentTest.css +6 -6
- package/templates/docs/css/hopscotch.css +585 -585
- package/templates/docs/css/style.css +1022 -1022
- package/templates/docs/impactReportTemplate.html +154 -154
- package/templates/docs/index.html +1501 -1493
- package/templates/docs/js/active-line.js +72 -72
- package/templates/docs/js/b.min.js +7 -7
- package/templates/docs/js/codemirror.js +9680 -9680
- package/templates/docs/js/designTokens.js +334 -334
- package/templates/docs/js/j.min.js +4 -4
- package/templates/docs/js/javascript.js +874 -874
- package/templates/docs/js/matchbrackets.js +145 -145
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
# RTL Split
|
|
2
|
-
|
|
3
|
-
we are doing in build time generating rtl related css code by using @zohodesk/postcss-rt npm.
|
|
4
|
-
It was automated, That postcss plugin create rtl reacted css and put them into same file, with css selector [dir=rtl] and ltr realted css with [dir=ltr].
|
|
5
|
-
Here is problem mostly no one need rtl and ltr related css at the same time in browser,
|
|
6
|
-
we are try to split them by [dir] and load which type of css is needed.
|
|
7
|
-
For this purpose we created RTL Split Plugin
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# To Try it out rtl-ltr split
|
|
11
|
-
### how to use this feature?
|
|
12
|
-
|
|
13
|
-
to use this feature use have give the below oprtions
|
|
14
|
-
`package.json`
|
|
15
|
-
```json
|
|
16
|
-
{
|
|
17
|
-
/// ...some things
|
|
18
|
-
"react-cli": {
|
|
19
|
-
// ...some things
|
|
20
|
-
"css": {
|
|
21
|
-
"enableRTLSplit": true,
|
|
22
|
-
"templateLabel": "{{--dir}}",// this is for html template css file path dir template
|
|
23
|
-
"disableMiniFiySelector": false,
|
|
24
|
-
"dirVarName": "document.dir" // this will be used for download css based on dir
|
|
25
|
-
},
|
|
26
|
-
// ...some things
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
1
|
+
# RTL Split
|
|
2
|
+
|
|
3
|
+
we are doing in build time generating rtl related css code by using @zohodesk/postcss-rt npm.
|
|
4
|
+
It was automated, That postcss plugin create rtl reacted css and put them into same file, with css selector [dir=rtl] and ltr realted css with [dir=ltr].
|
|
5
|
+
Here is problem mostly no one need rtl and ltr related css at the same time in browser,
|
|
6
|
+
we are try to split them by [dir] and load which type of css is needed.
|
|
7
|
+
For this purpose we created RTL Split Plugin
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# To Try it out rtl-ltr split
|
|
11
|
+
### how to use this feature?
|
|
12
|
+
|
|
13
|
+
to use this feature use have give the below oprtions
|
|
14
|
+
`package.json`
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
/// ...some things
|
|
18
|
+
"react-cli": {
|
|
19
|
+
// ...some things
|
|
20
|
+
"css": {
|
|
21
|
+
"enableRTLSplit": true,
|
|
22
|
+
"templateLabel": "{{--dir}}",// this is for html template css file path dir template
|
|
23
|
+
"disableMiniFiySelector": false,
|
|
24
|
+
"dirVarName": "document.dir" // this will be used for download css based on dir
|
|
25
|
+
},
|
|
26
|
+
// ...some things
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
@@ -6,21 +6,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.replaceCssDirTemplate = replaceCssDirTemplate;
|
|
7
7
|
exports.replaceCssDirTemplateMapper = replaceCssDirTemplateMapper;
|
|
8
8
|
exports.strFunctionTempalteToReplaceCssDir = void 0;
|
|
9
|
-
|
|
10
9
|
function replaceCssDirTemplate(filePath, cssDirTemplate) {
|
|
11
|
-
return filePath.endsWith('.ltr.css') ?
|
|
10
|
+
return filePath.endsWith('.ltr.css') ?
|
|
11
|
+
// ? cssPath.replace('.ltr.css', '.{{--dir}}.css')
|
|
12
12
|
filePath.replace('.ltr.css', `.${cssDirTemplate}.css`) : filePath;
|
|
13
13
|
}
|
|
14
|
-
|
|
15
14
|
function replaceCssDirTemplateMapper(assets, cssDirTemplate) {
|
|
16
15
|
return assets.map(filePath => replaceCssDirTemplate(filePath, cssDirTemplate));
|
|
17
16
|
}
|
|
18
|
-
|
|
19
17
|
const strFunctionTempalteToReplaceCssDir = cssDirTemplate => `function replaceCssDirTemplate(filePath, cssDirTemplate) {
|
|
20
18
|
return filePath.endsWith(".ltr.css")
|
|
21
19
|
? // ? cssPath.replace('.ltr.css', '.{{--dir}}.css')
|
|
22
20
|
filePath.replace(".ltr.css", ".${cssDirTemplate}.css")
|
|
23
21
|
: filePath;
|
|
24
22
|
}`;
|
|
25
|
-
|
|
26
23
|
exports.strFunctionTempalteToReplaceCssDir = strFunctionTempalteToReplaceCssDir;
|
|
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
9
|
-
|
|
10
8
|
var _path = _interopRequireDefault(require("path"));
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
let coverageScript = _fs.default.readFileSync(_path.default.resolve(__dirname, '..', 'templates', 'CoverageScriptTemplate.js')).toString();
|
|
15
|
-
|
|
16
11
|
class ScriptInstrumentPlugin {
|
|
17
12
|
apply(compiler) {
|
|
18
13
|
compiler.hooks.emit.tapAsync('ScriptInstrumentPlugin', (compilation, callback) => {
|
|
@@ -30,7 +25,5 @@ class ScriptInstrumentPlugin {
|
|
|
30
25
|
callback();
|
|
31
26
|
});
|
|
32
27
|
}
|
|
33
|
-
|
|
34
28
|
}
|
|
35
|
-
|
|
36
29
|
exports.default = ScriptInstrumentPlugin;
|
|
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _fs = _interopRequireDefault(require("fs"));
|
|
9
|
-
|
|
10
8
|
var _path = _interopRequireDefault(require("path"));
|
|
11
|
-
|
|
12
9
|
var _getI18nFileUrlPathTemplate = require("./I18nSplitPlugin/utils/getI18nFileUrlPathTemplate");
|
|
13
|
-
|
|
14
10
|
var _utils = require("../utils");
|
|
15
|
-
|
|
16
11
|
var _I18nKeysIdentifer = _interopRequireDefault(require("./I18nSplitPlugin/I18nKeysIdentifer"));
|
|
17
|
-
|
|
18
12
|
var _replaceCssDirTemplate = require("./RtlSplitPlugin/replaceCssDirTemplate");
|
|
19
|
-
|
|
20
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
14
|
const {
|
|
23
15
|
css: {
|
|
24
16
|
enableRTLSplit
|
|
@@ -27,36 +19,35 @@ const {
|
|
|
27
19
|
chunkSplitEnable
|
|
28
20
|
}
|
|
29
21
|
} = (0, _utils.getOptions)();
|
|
30
|
-
|
|
31
22
|
class ServiceWorkerPlugin {
|
|
32
23
|
constructor(options) {
|
|
33
24
|
this.i18nFileNameTemplate = options.i18nFileNameTemplate;
|
|
34
25
|
this.fileName = options.fileName;
|
|
35
26
|
this.serviceWorkerPath = options.filePath;
|
|
36
27
|
this.writePath = options.exitPath;
|
|
37
|
-
this.replaceText = options.replaceText;
|
|
28
|
+
this.replaceText = options.replaceText;
|
|
29
|
+
// this.publicPaths = options.publicPaths;
|
|
38
30
|
}
|
|
39
31
|
|
|
40
32
|
isInitialChunk(chunk) {
|
|
41
33
|
if ('canBeInitial' in chunk) {
|
|
42
34
|
return chunk.canBeInitial();
|
|
43
35
|
}
|
|
44
|
-
|
|
45
36
|
return chunk.isInitial();
|
|
46
37
|
}
|
|
47
|
-
|
|
48
38
|
apply(compiler) {
|
|
49
39
|
compiler.hooks.emit.tap('ServiceWorkerPlugin', compilation => {
|
|
50
40
|
_fs.default.readFile(this.serviceWorkerPath, 'utf-8', (err, data) => {
|
|
51
41
|
if (err) {
|
|
52
42
|
throw new Error(err);
|
|
53
43
|
} else {
|
|
54
|
-
/* const extractedChunks = compilation.chunks.filter(chunk => {
|
|
55
|
-
if ('canBeInitial' in chunk) {
|
|
56
|
-
return chunk.canBeInitial();
|
|
57
|
-
}
|
|
58
|
-
return chunk.isInitial();
|
|
44
|
+
/* const extractedChunks = compilation.chunks.filter(chunk => {
|
|
45
|
+
if ('canBeInitial' in chunk) {
|
|
46
|
+
return chunk.canBeInitial();
|
|
47
|
+
}
|
|
48
|
+
return chunk.isInitial();
|
|
59
49
|
}); */
|
|
50
|
+
|
|
60
51
|
// let [js, css, , , i18nPublicPath] = this.publicPaths;
|
|
61
52
|
// let initialChunkUrls = [];
|
|
62
53
|
let allChunkUrls = [];
|
|
@@ -64,44 +55,37 @@ class ServiceWorkerPlugin {
|
|
|
64
55
|
let entrypoint = compilation.entrypoints.get('main');
|
|
65
56
|
let initialChunkUrls = entrypoint.getFiles();
|
|
66
57
|
const cssDirTemplate = '@dir@';
|
|
67
|
-
/**
|
|
68
|
-
* NOTE:
|
|
69
|
-
* if chunkSplitEnable is false means,
|
|
70
|
-
* serviceWorker will get i18n files path for html
|
|
58
|
+
/**
|
|
59
|
+
* NOTE:
|
|
60
|
+
* if chunkSplitEnable is false means,
|
|
61
|
+
* serviceWorker will get i18n files path for html
|
|
71
62
|
*/
|
|
72
|
-
|
|
73
63
|
let initalI18nAssets = chunkSplitEnable ? entrypoint.chunks.filter(chunk => _I18nKeysIdentifer.default.isChunkHasI18n(chunk)).map(chunk => (0, _getI18nFileUrlPathTemplate.getI18nFileUrlPathTemplate)(compilation, chunk, this.i18nFileNameTemplate, '@locale@')) : [];
|
|
74
64
|
chunkSplitEnable && compilation.chunks.filter(c => !this.isInitialChunk(c)).filter(chunk => _I18nKeysIdentifer.default.isChunkHasI18n(chunk)).forEach(chunk => {
|
|
75
65
|
// let isInitial = this.isInitialChunk(chunk);
|
|
76
66
|
allChunkUrls = allChunkUrls.concat(chunk.files);
|
|
77
67
|
allI18nAssets.push((0, _getI18nFileUrlPathTemplate.getI18nFileUrlPathTemplate)(compilation, chunk, this.i18nFileNameTemplate, '@locale@'));
|
|
78
68
|
});
|
|
79
|
-
/** Removing source map files from getting added */
|
|
80
69
|
|
|
70
|
+
/** Removing source map files from getting added */
|
|
81
71
|
initialChunkUrls = initialChunkUrls.filter(fileName => !fileName.endsWith('.map'));
|
|
82
72
|
allChunkUrls = allChunkUrls.filter(fileName => !fileName.endsWith('.map'));
|
|
83
|
-
|
|
84
73
|
if (enableRTLSplit) {
|
|
85
74
|
initialChunkUrls = (0, _replaceCssDirTemplate.replaceCssDirTemplateMapper)(initialChunkUrls, cssDirTemplate);
|
|
86
75
|
allChunkUrls = (0, _replaceCssDirTemplate.replaceCssDirTemplateMapper)(allChunkUrls, cssDirTemplate);
|
|
87
76
|
}
|
|
88
|
-
|
|
89
77
|
let mod = data.replace(this.replaceText, `
|
|
90
78
|
self.assets = ${JSON.stringify(initialChunkUrls.concat(initalI18nAssets))};
|
|
91
79
|
self.allChunks = ${JSON.stringify(allChunkUrls.concat(allI18nAssets))};`);
|
|
92
|
-
|
|
93
80
|
if (!_fs.default.existsSync(this.writePath)) {
|
|
94
81
|
_fs.default.mkdirSync(this.writePath, {
|
|
95
82
|
recursive: true
|
|
96
83
|
});
|
|
97
84
|
}
|
|
98
|
-
|
|
99
85
|
_fs.default.writeFileSync(_path.default.join(this.writePath, this.fileName), mod);
|
|
100
86
|
}
|
|
101
87
|
});
|
|
102
88
|
});
|
|
103
89
|
}
|
|
104
|
-
|
|
105
90
|
}
|
|
106
|
-
|
|
107
91
|
exports.default = ServiceWorkerPlugin;
|
|
@@ -4,27 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = ShadowDOMSupportPlugin;
|
|
7
|
-
|
|
8
7
|
var _Template = _interopRequireDefault(require("webpack/lib/Template"));
|
|
9
|
-
|
|
10
8
|
var _JsonpMainTemplatePlugin = _interopRequireDefault(require("webpack/lib/web/JsonpMainTemplatePlugin"));
|
|
11
|
-
|
|
12
9
|
var _tapable = require("tapable");
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
/* eslint-disable no-unused-vars */
|
|
12
|
+
|
|
17
13
|
//eslint-disable-next-line
|
|
18
14
|
function ShadowDOMSupportPlugin() {}
|
|
19
|
-
|
|
20
15
|
ShadowDOMSupportPlugin.prototype.apply = function () {
|
|
21
16
|
this.patchJsonpMainTemplatePlugin();
|
|
22
17
|
};
|
|
23
|
-
|
|
24
18
|
ShadowDOMSupportPlugin.prototype.patchJsonpMainTemplatePlugin = function () {
|
|
25
19
|
_JsonpMainTemplatePlugin.default.prototype.apply = this._apply;
|
|
26
20
|
};
|
|
27
|
-
|
|
28
21
|
ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
29
22
|
const needChunkOnDemandLoadingCode = chunk => {
|
|
30
23
|
for (const chunkGroup of chunk.groupsIterable) {
|
|
@@ -32,46 +25,38 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
32
25
|
return true;
|
|
33
26
|
}
|
|
34
27
|
}
|
|
35
|
-
|
|
36
28
|
return false;
|
|
37
29
|
};
|
|
38
|
-
|
|
39
30
|
const needChunkLoadingCode = chunk => {
|
|
40
31
|
for (const chunkGroup of chunk.groupsIterable) {
|
|
41
32
|
if (chunkGroup.chunks.length > 1) {
|
|
42
33
|
return true;
|
|
43
34
|
}
|
|
44
|
-
|
|
45
35
|
if (chunkGroup.getNumberOfChildren() > 0) {
|
|
46
36
|
return true;
|
|
47
37
|
}
|
|
48
38
|
}
|
|
49
|
-
|
|
50
39
|
return false;
|
|
51
40
|
};
|
|
52
|
-
|
|
53
41
|
const needEntryDeferringCode = chunk => {
|
|
54
42
|
for (const chunkGroup of chunk.groupsIterable) {
|
|
55
43
|
if (chunkGroup.chunks.length > 1) {
|
|
56
44
|
return true;
|
|
57
45
|
}
|
|
58
46
|
}
|
|
59
|
-
|
|
60
47
|
return false;
|
|
61
48
|
};
|
|
62
|
-
|
|
63
49
|
const needPrefetchingCode = chunk => {
|
|
64
50
|
const allPrefetchChunks = chunk.getChildIdsByOrdersMap(true).prefetch;
|
|
65
51
|
return allPrefetchChunks && Object.keys(allPrefetchChunks).length;
|
|
66
|
-
};
|
|
67
|
-
|
|
52
|
+
};
|
|
68
53
|
|
|
54
|
+
// TODO webpack 5, no adding to .hooks, use WeakMap and static methods
|
|
69
55
|
['jsonpScript', 'linkPreload', 'linkPrefetch'].forEach(hook => {
|
|
70
56
|
if (!mainTemplate.hooks[hook]) {
|
|
71
57
|
mainTemplate.hooks[hook] = new _tapable.SyncWaterfallHook(['source', 'chunk', 'hash']);
|
|
72
58
|
}
|
|
73
59
|
});
|
|
74
|
-
|
|
75
60
|
const getScriptSrcPath = (hash, chunk, chunkIdExpression) => {
|
|
76
61
|
const {
|
|
77
62
|
chunkFilename
|
|
@@ -83,19 +68,15 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
83
68
|
chunk: {
|
|
84
69
|
id: `" + ${chunkIdExpression} + "`,
|
|
85
70
|
hash: `" + ${JSON.stringify(chunkMaps.hash)}[${chunkIdExpression}] + "`,
|
|
86
|
-
|
|
87
71
|
hashWithLength(length) {
|
|
88
72
|
const shortChunkHashMap = Object.create(null);
|
|
89
|
-
|
|
90
73
|
for (const chunkId of Object.keys(chunkMaps.hash)) {
|
|
91
74
|
if (typeof chunkMaps.hash[chunkId] === 'string') {
|
|
92
75
|
shortChunkHashMap[chunkId] = chunkMaps.hash[chunkId].substr(0, length);
|
|
93
76
|
}
|
|
94
77
|
}
|
|
95
|
-
|
|
96
78
|
return `" + ${JSON.stringify(shortChunkHashMap)}[${chunkIdExpression}] + "`;
|
|
97
79
|
},
|
|
98
|
-
|
|
99
80
|
name: `" + (${JSON.stringify(chunkMaps.name)}[${chunkIdExpression}]||${chunkIdExpression}) + "`,
|
|
100
81
|
contentHash: {
|
|
101
82
|
javascript: `" + ${JSON.stringify(chunkMaps.contentHash.javascript)}[${chunkIdExpression}] + "`
|
|
@@ -104,13 +85,11 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
104
85
|
javascript: length => {
|
|
105
86
|
const shortContentHashMap = {};
|
|
106
87
|
const contentHash = chunkMaps.contentHash.javascript;
|
|
107
|
-
|
|
108
88
|
for (const chunkId of Object.keys(contentHash)) {
|
|
109
89
|
if (typeof contentHash[chunkId] === 'string') {
|
|
110
90
|
shortContentHashMap[chunkId] = contentHash[chunkId].substr(0, length);
|
|
111
91
|
}
|
|
112
92
|
}
|
|
113
|
-
|
|
114
93
|
return `" + ${JSON.stringify(shortContentHashMap)}[${chunkIdExpression}] + "`;
|
|
115
94
|
}
|
|
116
95
|
}
|
|
@@ -118,22 +97,17 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
118
97
|
contentHashType: 'javascript'
|
|
119
98
|
});
|
|
120
99
|
};
|
|
121
|
-
|
|
122
100
|
mainTemplate.hooks.localVars.tap('JsonpMainTemplatePlugin', (source, chunk, hash) => {
|
|
123
101
|
const extraCode = [];
|
|
124
|
-
|
|
125
102
|
if (needChunkLoadingCode(chunk)) {
|
|
126
103
|
extraCode.push('', '// object to store loaded and loading chunks', '// undefined = chunk not loaded, null = chunk preloaded/prefetched', '// Promise = chunk loading, 0 = chunk loaded', 'var installedChunks = {', _Template.default.indent(chunk.ids.map(id => `${JSON.stringify(id)}: 0`).join(',\n')), '};', '', needEntryDeferringCode(chunk) ? 'var deferredModules = [];' : '');
|
|
127
104
|
}
|
|
128
|
-
|
|
129
105
|
if (needChunkOnDemandLoadingCode(chunk)) {
|
|
130
106
|
extraCode.push('', '// script path function', 'function jsonpScriptSrc(chunkId) {', _Template.default.indent([`return ${mainTemplate.requireFn}.p + ${getScriptSrcPath(hash, chunk, 'chunkId')}`]), '}');
|
|
131
107
|
}
|
|
132
|
-
|
|
133
108
|
if (extraCode.length === 0) {
|
|
134
109
|
return source;
|
|
135
110
|
}
|
|
136
|
-
|
|
137
111
|
return _Template.default.asString([source, ...extraCode]);
|
|
138
112
|
});
|
|
139
113
|
mainTemplate.hooks.jsonpScript.tap('JsonpMainTemplatePlugin', (_, chunk, hash) => {
|
|
@@ -169,18 +143,15 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
169
143
|
stage: 10
|
|
170
144
|
}, (source, chunk, hash) => {
|
|
171
145
|
const chunkMap = chunk.getChildIdsByOrdersMap().preload;
|
|
172
|
-
|
|
173
146
|
if (!chunkMap || Object.keys(chunkMap).length === 0) {
|
|
174
147
|
return source;
|
|
175
148
|
}
|
|
176
|
-
|
|
177
149
|
return _Template.default.asString([source, '', '// chunk preloadng for javascript', '', `var chunkPreloadMap = ${JSON.stringify(chunkMap, null, '\t')};`, '', 'var chunkPreloadData = chunkPreloadMap[chunkId];', 'if(chunkPreloadData) {', _Template.default.indent(['chunkPreloadData.forEach(function(chunkId) {', _Template.default.indent(['if(installedChunks[chunkId] === undefined) {', _Template.default.indent(['installedChunks[chunkId] = null;', mainTemplate.hooks.linkPreload.call('', chunk, hash), 'window.ZDShadowRoot.getElementById("head").appendChild(link);']), '}']), '});']), '}']);
|
|
178
150
|
});
|
|
179
151
|
mainTemplate.hooks.requireExtensions.tap('JsonpMainTemplatePlugin', (source, chunk) => {
|
|
180
152
|
if (!needChunkOnDemandLoadingCode(chunk)) {
|
|
181
153
|
return source;
|
|
182
154
|
}
|
|
183
|
-
|
|
184
155
|
return _Template.default.asString([source, '', '// on error function for async loading', `${mainTemplate.requireFn}.oe = function(err) { console.error(err); throw err; };`]);
|
|
185
156
|
});
|
|
186
157
|
mainTemplate.hooks.bootstrap.tap('JsonpMainTemplatePlugin', (source, chunk, hash) => {
|
|
@@ -189,7 +160,6 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
189
160
|
const withPrefetch = needPrefetchingCode(chunk);
|
|
190
161
|
return _Template.default.asString([source, '', '// install a JSONP callback for chunk loading', 'function webpackJsonpCallback(data) {', _Template.default.indent(['var chunkIds = data[0];', 'var moreModules = data[1];', withDefer ? 'var executeModules = data[2];' : '', withPrefetch ? 'var prefetchChunks = data[3] || [];' : '', '// add "moreModules" to the modules object,', '// then flag all "chunkIds" as loaded and fire callback', 'var moduleId, chunkId, i = 0, resolves = [];', 'for(;i < chunkIds.length; i++) {', _Template.default.indent(['chunkId = chunkIds[i];', 'if(installedChunks[chunkId]) {', _Template.default.indent('resolves.push(installedChunks[chunkId][0]);'), '}', 'installedChunks[chunkId] = 0;']), '}', 'for(moduleId in moreModules) {', _Template.default.indent(['if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {', _Template.default.indent(mainTemplate.renderAddModule(hash, chunk, 'moduleId', 'moreModules[moduleId]')), '}']), '}', 'if(parentJsonpFunction) parentJsonpFunction(data);', withPrefetch ? _Template.default.asString(['// chunk prefetching for javascript', 'prefetchChunks.forEach(function(chunkId) {', _Template.default.indent(['if(installedChunks[chunkId] === undefined) {', _Template.default.indent(['installedChunks[chunkId] = null;', mainTemplate.hooks.linkPrefetch.call('', chunk, hash), 'window.ZDShadowRoot.getElementById("head").appendChild(link);']), '}']), '});']) : '', 'while(resolves.length) {', _Template.default.indent('resolves.shift()();'), '}', withDefer ? _Template.default.asString(['', '// add entry modules from loaded chunk to deferred list', 'deferredModules.push.apply(deferredModules, executeModules || []);', '', '// run deferred modules when all chunks ready', 'return checkDeferredModules();']) : '']), '};', withDefer ? _Template.default.asString(['function checkDeferredModules() {', _Template.default.indent(['var result;', 'for(var i = 0; i < deferredModules.length; i++) {', _Template.default.indent(['var deferredModule = deferredModules[i];', 'var fulfilled = true;', 'for(var j = 1; j < deferredModule.length; j++) {', _Template.default.indent(['var depId = deferredModule[j];', 'if(installedChunks[depId] !== 0) fulfilled = false;']), '}', 'if(fulfilled) {', _Template.default.indent(['deferredModules.splice(i--, 1);', `result = ${mainTemplate.requireFn}(${mainTemplate.requireFn}.s = deferredModule[0]);`]), '}']), '}', 'return result;']), '}']) : '']);
|
|
191
162
|
}
|
|
192
|
-
|
|
193
163
|
return source;
|
|
194
164
|
});
|
|
195
165
|
mainTemplate.hooks.beforeStartup.tap('JsonpMainTemplatePlugin', (source, chunk, hash) => {
|
|
@@ -202,16 +172,13 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
202
172
|
} = mainTemplate.outputOptions;
|
|
203
173
|
return _Template.default.asString([`var jsonpArray = ${globalObject}[${JSON.stringify(jsonpFunction)}] = ${globalObject}[${JSON.stringify(jsonpFunction)}] || [];`, 'var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);', 'jsonpArray.push = webpackJsonpCallback;', 'jsonpArray = jsonpArray.slice();', 'for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);', 'var parentJsonpFunction = oldJsonpFunction;', '', source]);
|
|
204
174
|
}
|
|
205
|
-
|
|
206
175
|
return source;
|
|
207
176
|
});
|
|
208
177
|
mainTemplate.hooks.beforeStartup.tap('JsonpMainTemplatePlugin', (source, chunk, hash) => {
|
|
209
178
|
const prefetchChunks = chunk.getChildIdsByOrders().prefetch;
|
|
210
|
-
|
|
211
179
|
if (needChunkLoadingCode(chunk) && prefetchChunks && prefetchChunks.length) {
|
|
212
180
|
return _Template.default.asString([source, `webpackJsonpCallback([[], {}, 0, ${JSON.stringify(prefetchChunks)}]);`]);
|
|
213
181
|
}
|
|
214
|
-
|
|
215
182
|
return source;
|
|
216
183
|
});
|
|
217
184
|
mainTemplate.hooks.startup.tap('JsonpMainTemplatePlugin', (source, chunk, hash) => {
|
|
@@ -220,10 +187,8 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
220
187
|
const entries = [chunk.entryModule].filter(Boolean).map(m => [m.id].concat(Array.from(chunk.groupsIterable)[0].chunks.filter(c => c !== chunk).map(c => c.id)));
|
|
221
188
|
return _Template.default.asString(['// add entry module to deferred list', `deferredModules.push(${entries.map(e => JSON.stringify(e)).join(', ')});`, '// run deferred modules when ready', 'return checkDeferredModules();']);
|
|
222
189
|
}
|
|
223
|
-
|
|
224
190
|
return _Template.default.asString(['// run deferred modules from other chunks', 'checkDeferredModules();']);
|
|
225
191
|
}
|
|
226
|
-
|
|
227
192
|
return source;
|
|
228
193
|
});
|
|
229
194
|
mainTemplate.hooks.hotBootstrap.tap('JsonpMainTemplatePlugin', (source, chunk, hash) => {
|
|
@@ -253,9 +218,7 @@ ShadowDOMSupportPlugin.prototype._apply = function (mainTemplate) {
|
|
|
253
218
|
hash: `" + ${mainTemplate.renderCurrentHashCode(hash)} + "`,
|
|
254
219
|
hashWithLength: length => `" + ${mainTemplate.renderCurrentHashCode(hash, length)} + "`
|
|
255
220
|
});
|
|
256
|
-
|
|
257
221
|
const runtimeSource = _Template.default.getFunctionContent(require('./JsonpMainTemplate.runtime')).replace(/\/\/\$semicolon/g, ';').replace(/\$require\$/g, mainTemplate.requireFn).replace(/\$crossOriginLoading\$/g, crossOriginLoading ? JSON.stringify(crossOriginLoading) : 'null').replace(/\$hotMainFilename\$/g, currentHotUpdateMainFilename).replace(/\$hotChunkFilename\$/g, currentHotUpdateChunkFilename).replace(/\$hash\$/g, JSON.stringify(hash));
|
|
258
|
-
|
|
259
222
|
return `${source}
|
|
260
223
|
function hotDisposeChunk(chunkId) {
|
|
261
224
|
delete installedChunks[chunkId];
|
|
@@ -4,26 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _path = _interopRequireDefault(require("path"));
|
|
9
|
-
|
|
10
8
|
var _webpackSources = require("webpack-sources");
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
class SourceMapHookPlugin {
|
|
15
11
|
apply(compiler) {
|
|
16
12
|
compiler.hooks.emit.tap('SourceMapHookPlugin', compilation => {
|
|
17
13
|
Object.keys(compilation.assets).forEach(filename => {
|
|
18
14
|
if (/\.js$/g.test(filename) && !/(\.map.|tp\/)/g.test(filename)) {
|
|
19
15
|
let source = compilation.assets[filename].source();
|
|
20
|
-
|
|
21
16
|
let {
|
|
22
17
|
name
|
|
23
18
|
} = _path.default.parse(filename);
|
|
24
|
-
|
|
25
19
|
let src = source;
|
|
26
|
-
|
|
27
20
|
if (!/(i18n-chunk\/)/g.test(filename)) {
|
|
28
21
|
src = `${source}\n//# sourceMappingURL=../../js/${name}.js.map`;
|
|
29
22
|
compilation.assets[filename.replace(/js\//g, 'smap/js/')] = new _webpackSources.RawSource(src);
|
|
@@ -34,8 +27,6 @@ class SourceMapHookPlugin {
|
|
|
34
27
|
});
|
|
35
28
|
});
|
|
36
29
|
}
|
|
37
|
-
|
|
38
30
|
}
|
|
39
|
-
|
|
40
31
|
var _default = SourceMapHookPlugin;
|
|
41
32
|
exports.default = _default;
|
|
@@ -4,55 +4,43 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _webpack = require("webpack");
|
|
9
|
-
|
|
10
8
|
var _fs = _interopRequireDefault(require("fs"));
|
|
11
|
-
|
|
12
9
|
var _path = _interopRequireDefault(require("path"));
|
|
13
|
-
|
|
14
10
|
var _crypto = _interopRequireDefault(require("crypto"));
|
|
15
|
-
|
|
16
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* Plugin in turn uses the defineplugin to generate global constants.
|
|
12
|
+
/**
|
|
13
|
+
* Plugin that generates hash for the provided list of third party files
|
|
14
|
+
* Map the provided key with the file hash and add it to the list of exisiting global constants.
|
|
15
|
+
* Plugin in turn uses the defineplugin to generate global constants.
|
|
22
16
|
*/
|
|
17
|
+
|
|
23
18
|
class TPHashMappingPlugin {
|
|
24
19
|
constructor(options) {
|
|
25
20
|
this.fileMappings = options.fileMappings;
|
|
26
21
|
this.tpFolder = options.tpFolder;
|
|
27
22
|
return new _webpack.DefinePlugin(this.getFiles());
|
|
28
23
|
}
|
|
29
|
-
|
|
30
24
|
getHash(content) {
|
|
31
25
|
let hash = _crypto.default.createHash('md5');
|
|
32
|
-
|
|
33
26
|
let data = hash.update(content, 'utf-8');
|
|
34
27
|
let gen_hash = data.digest('hex');
|
|
35
28
|
return gen_hash;
|
|
36
29
|
}
|
|
37
|
-
|
|
38
30
|
getFiles() {
|
|
39
31
|
let hashMapping = {};
|
|
40
32
|
this.fileMappings.forEach(fileInfo => {
|
|
41
33
|
let filePath = `${_path.default.join(this.tpFolder, fileInfo.filePath, fileInfo.fileName)}`;
|
|
42
|
-
|
|
43
34
|
if (_fs.default.existsSync(filePath)) {
|
|
44
35
|
let fileContent = _fs.default.readFileSync(filePath, {
|
|
45
36
|
encoding: 'utf-8'
|
|
46
37
|
});
|
|
47
|
-
|
|
48
38
|
let generatedHash = this.getHash(fileContent);
|
|
49
39
|
let outputFileSplit = fileInfo.fileName.split('.');
|
|
50
40
|
outputFileSplit.splice(outputFileSplit.length - 1, 0, generatedHash);
|
|
51
41
|
let outputFileName = outputFileSplit.join('.');
|
|
52
42
|
let outputFilePath = `${_path.default.join(this.tpFolder, fileInfo.filePath, outputFileName)}`;
|
|
53
|
-
|
|
54
43
|
_fs.default.writeFileSync(outputFilePath, fileContent);
|
|
55
|
-
|
|
56
44
|
hashMapping[fileInfo.key] = JSON.stringify(generatedHash);
|
|
57
45
|
} else {
|
|
58
46
|
throw new Error(`Third party file ${fileInfo.fileName} does not exist`);
|
|
@@ -60,8 +48,6 @@ class TPHashMappingPlugin {
|
|
|
60
48
|
});
|
|
61
49
|
return hashMapping;
|
|
62
50
|
}
|
|
63
|
-
|
|
64
51
|
}
|
|
65
|
-
|
|
66
52
|
var _default = TPHashMappingPlugin;
|
|
67
53
|
exports.default = _default;
|
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _webpackSources = require("webpack-sources");
|
|
9
|
-
|
|
10
8
|
var _uglifycss = _interopRequireDefault(require("uglifycss"));
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
class UglifyCSSPlugin {
|
|
15
11
|
apply(compiler) {
|
|
16
12
|
compiler.hooks.emit.tap('UglifyCSSPlugin', compilation => {
|
|
@@ -18,13 +14,10 @@ class UglifyCSSPlugin {
|
|
|
18
14
|
if (/\.css$/.test(filename)) {
|
|
19
15
|
try {
|
|
20
16
|
let asset = compilation.assets[filename].source();
|
|
21
|
-
|
|
22
17
|
if (typeof asset !== 'string') {
|
|
23
18
|
asset = asset.toString();
|
|
24
19
|
}
|
|
25
|
-
|
|
26
20
|
const result = _uglifycss.default.processString(asset);
|
|
27
|
-
|
|
28
21
|
compilation.assets[filename] = new _webpackSources.RawSource(result);
|
|
29
22
|
} catch (e) {
|
|
30
23
|
compilation.errors.push(e);
|
|
@@ -33,7 +26,5 @@ class UglifyCSSPlugin {
|
|
|
33
26
|
});
|
|
34
27
|
});
|
|
35
28
|
}
|
|
36
|
-
|
|
37
29
|
}
|
|
38
|
-
|
|
39
30
|
exports.default = UglifyCSSPlugin;
|