@zohodesk/client_build_tool 0.0.1-0.exp.0.0.3
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/.babelrc +12 -0
- package/.lintstagedrc +3 -0
- package/.vscode/settings.json +5 -0
- package/CHANGELOG.md +84 -0
- package/ConfigurationDocumentation.md +567 -0
- package/ContributionGuide.md +2 -0
- package/NOTES-Dec12.md +12 -0
- package/README.md +184 -0
- package/README_backup.md +100 -0
- package/TODO.md +35 -0
- package/cli.js +31 -0
- package/docs/BabelCustomizations.md +55 -0
- package/docs/CSSCustomPluginsDocumentation.md +71 -0
- package/docs/CustomChunksConfiguration.md +0 -0
- package/docs/EFCFileTemplate.md +0 -0
- package/docs/MockApi.md +61 -0
- package/docs/NameTemplateUtility.md +93 -0
- package/docs/ServiseWorkerTemplate.md +0 -0
- package/docs/SupportedBrowserVersions.md +61 -0
- package/helpDocs/check.js +7 -0
- package/helpDocs/commmands/build.md +0 -0
- package/helpDocs/commmands/start.md +0 -0
- package/helpDocs/examples/buildWithContentHash.md +0 -0
- package/helpDocs/examples/startDevServer.md +0 -0
- package/helpDocs/examples/startWithMockAPI.md +0 -0
- package/helpDocs/node18-env.md +30 -0
- package/helpDocs/troubleshootings/NewMachineSetup.md +71 -0
- package/helpDocs/troubleshootings/README.md +9 -0
- package/helpDocs/troubleshootings/hg_install.sh +18 -0
- package/helpDocs/troubleshootings/newMachineMac.sh +86 -0
- package/helpDocs/troubleshootings/newMachineUbundu.bash +84 -0
- package/lib/allCommandsConfigs.js +25 -0
- package/lib/commands/build/commandExecutor.js +17 -0
- package/lib/commands/build/config.js +12 -0
- package/lib/commands/build/optionsProcessor.js +35 -0
- package/lib/commands/build/preProcessor.js +12 -0
- package/lib/commands/buildEs/commandExecutor.js +33 -0
- package/lib/commands/buildEs/config.js +12 -0
- package/lib/commands/buildEs/preProcessor.js +17 -0
- package/lib/commands/buildLib/commandExecutor.js +33 -0
- package/lib/commands/buildLib/config.js +12 -0
- package/lib/commands/buildLib/preProcessor.js +17 -0
- package/lib/commands/mockserver/commandExecutor.js +43 -0
- package/lib/commands/mockserver/config.js +12 -0
- package/lib/commands/pre_process/commandExecutor.js +18 -0
- package/lib/commands/pre_process/config.js +12 -0
- package/lib/commands/start/commandExecutor.js +12 -0
- package/lib/commands/start/config.js +12 -0
- package/lib/commands/start/optionsProcessor.js +30 -0
- package/lib/commands/start/preProcessor.js +12 -0
- package/lib/commands/template/commandExecutor.js +28 -0
- package/lib/commands/template/config.js +12 -0
- package/lib/commands/version/commandExecutor.js +14 -0
- package/lib/commands/version/config.js +12 -0
- package/lib/commandsRouter.js +74 -0
- package/lib/index.js +12 -0
- package/lib/logger.js +34 -0
- package/lib/schemas/applyValuesToSchema/index.js +34 -0
- package/lib/schemas/applyValuesToSchema/isObject.js +10 -0
- package/lib/schemas/applyValuesToSchema/isValid.js +14 -0
- package/lib/schemas/cliArgsToObject.js +39 -0
- package/lib/schemas/defaultConfigValues.js +393 -0
- package/lib/schemas/defaultConfigValuesOnly.js +200 -0
- package/lib/schemas/deprecatedOptionsHandler.js +67 -0
- package/lib/schemas/getNpmVersion.js +22 -0
- package/lib/schemas/giveDefaultValue.js +18 -0
- package/lib/schemas/npmConfigToObject.js +35 -0
- package/lib/schemas/readOptions.js +87 -0
- package/lib/schemas/readOptionsForConfigFile.js +42 -0
- package/lib/shared/babel/addDefaultPlugins.js +15 -0
- package/lib/shared/babel/babelWebConfig.js +54 -0
- package/lib/shared/babel/babel_plugins/removeAttributesPlugin.js +23 -0
- package/lib/shared/babel/getBabelPlugin.js +42 -0
- package/lib/shared/babel/runBabelForJSFile.js +24 -0
- package/lib/shared/babel/runBabelForTsFile.js +30 -0
- package/lib/shared/bundler/webpack/common/decidePublicPath.js +57 -0
- package/lib/shared/bundler/webpack/common/hashUtils.js +20 -0
- package/lib/shared/bundler/webpack/common/libAlias.js +31 -0
- package/lib/shared/bundler/webpack/common/modeUtils.js +39 -0
- package/lib/shared/bundler/webpack/common/nameTemplates.js +105 -0
- package/lib/shared/bundler/webpack/common/resourceBasedPublicPath.js +21 -0
- package/lib/shared/bundler/webpack/configCustomLoaders.js +10 -0
- package/lib/shared/bundler/webpack/cssLoaders.js +16 -0
- package/lib/shared/bundler/webpack/custom_plugins/BundleIntegrityReport/index.js +83 -0
- package/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/index.js +119 -0
- package/lib/shared/bundler/webpack/custom_plugins/CdnChangePlugin/webpackCustomJsUrlLoader.js +46 -0
- package/lib/shared/bundler/webpack/custom_plugins/CustomScriptLoadingPlugin.js +109 -0
- package/lib/shared/bundler/webpack/custom_plugins/EFCTemplatePlugin.js +112 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nNumericIndexPlugin/I18nNumericIndexHtmlInjectorPlugin.js +47 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nNumericIndexPlugin/I18nNumericIndexPlugin.js +190 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ContributionGuide.md +11 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nFilesEmitPlugin.js +174 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nKeysIdentifer.js +76 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nRuntimeDealerPlugin.js +223 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/I18nSplit.md +95 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/LocaleChunkAssetsStore.js +73 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/ModulesI18nKeysStore.js +88 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/README.md +25 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/constants.js +29 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/createHash.js +24 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/getI18nLoadingRuntimeModule.js +76 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/index.js +39 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/iterateModulesInChunk.js +50 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/optionsHandler.js +68 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/pathCreator.js +23 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/readI18nValues.js +29 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateFileName.js +43 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/templateHashHelpers.js +77 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectAstKeys.js +98 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/collectI18nKeys.js +66 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/getChunkModules.js +13 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/hashUtils.js +19 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/index.js +31 -0
- package/lib/shared/bundler/webpack/custom_plugins/I18nSplitPlugin/utils/propertiesUtils.js +129 -0
- package/lib/shared/bundler/webpack/custom_plugins/InitialHtmlPlugin.js +60 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/addFilesNamesToManifestJson.js +30 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createInitialEntries.js +23 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/createManifestJson.js +35 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/findInitialFileNames.js +18 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/index.js +46 -0
- package/lib/shared/bundler/webpack/custom_plugins/ManifestJsonPlugin/removeHashFromFileName.js +18 -0
- package/lib/shared/bundler/webpack/custom_plugins/RTLSplitPlugin.js +1 -0
- package/lib/shared/bundler/webpack/custom_plugins/ResourceHintsPlugin.js +193 -0
- package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/OverwriteCssPathForRTL.js +62 -0
- package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtlCssPlugin.js +84 -0
- package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/RtrSplit.md +34 -0
- package/lib/shared/bundler/webpack/custom_plugins/RtlSplitPlugin/replaceCssDirTemplate.js +27 -0
- package/lib/shared/bundler/webpack/custom_plugins/RuntimeResourceCleanup/index.js +73 -0
- package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/classHandling.js +20 -0
- package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/index.js +78 -0
- package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/selectorWeightPrefixAdder.js +51 -0
- package/lib/shared/bundler/webpack/custom_plugins/SelectorWeightPlugin/windowsModification.js +16 -0
- package/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPlugin.js +120 -0
- package/lib/shared/bundler/webpack/custom_plugins/ServiceWorkerPluginUtils.js +13 -0
- package/lib/shared/bundler/webpack/custom_plugins/SourceMapPlugin/index.js +71 -0
- package/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/addHashToFilePath.js +22 -0
- package/lib/shared/bundler/webpack/custom_plugins/TPHashMappingPlugin/index.js +55 -0
- package/lib/shared/bundler/webpack/custom_plugins/UglifyCSSPlugin/index.js.js +49 -0
- package/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/ErrorHandler.js +62 -0
- package/lib/shared/bundler/webpack/custom_plugins/VariableConversionCollector/index.js +362 -0
- package/lib/shared/bundler/webpack/custom_plugins/custom_attribute_plugin/index.js +80 -0
- package/lib/shared/bundler/webpack/custom_plugins/emitAsset.js +14 -0
- package/lib/shared/bundler/webpack/custom_plugins/getInitialAssetsFuncTemplate.js +57 -0
- package/lib/shared/bundler/webpack/custom_plugins/getInitialI18nAssetsArrayStr.js +87 -0
- package/lib/shared/bundler/webpack/defaultVendorPatternList.js +13 -0
- package/lib/shared/bundler/webpack/devtoolConfig.js +13 -0
- package/lib/shared/bundler/webpack/entryConfig.js +28 -0
- package/lib/shared/bundler/webpack/externals.js +17 -0
- package/lib/shared/bundler/webpack/getCSSLoaders.js +29 -0
- package/lib/shared/bundler/webpack/getFilenameFromModule.js +24 -0
- package/lib/shared/bundler/webpack/jsLoaders.js +30 -0
- package/lib/shared/bundler/webpack/loaderConfigs/assetLoaders.js +12 -0
- package/lib/shared/bundler/webpack/loaderConfigs/babelLoaderConfig.js +18 -0
- package/lib/shared/bundler/webpack/loaderConfigs/checkIsPatternsMatchFilename.js +56 -0
- package/lib/shared/bundler/webpack/loaderConfigs/configHtmlTemplateLoader.js +18 -0
- package/lib/shared/bundler/webpack/loaderConfigs/configPostCssLoader.js +37 -0
- package/lib/shared/bundler/webpack/loaderConfigs/configWebWorkerLoader.js +21 -0
- package/lib/shared/bundler/webpack/loaderConfigs/configsAssetsLoaders.js +86 -0
- package/lib/shared/bundler/webpack/loaderConfigs/cssClassNameGenerate.js +65 -0
- package/lib/shared/bundler/webpack/loaderConfigs/getCssLoaderOptions.js +21 -0
- package/lib/shared/bundler/webpack/loaderConfigs/i18nIdReplaceLoaderConfig.js +94 -0
- package/lib/shared/bundler/webpack/loaders/i18nIdReplaceLoader.js +201 -0
- package/lib/shared/bundler/webpack/loaders/miniCssFallBackLoader.js +7 -0
- package/lib/shared/bundler/webpack/loaders/workerLoader.js +133 -0
- package/lib/shared/bundler/webpack/optimizationConfig.js +56 -0
- package/lib/shared/bundler/webpack/outputConfig.js +38 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configBundleAnalyzer.js +40 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configBundleIntegrityReport.js +36 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCSSMinifierPlugin.js +28 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCdnChangePlugin.js +27 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCopyPublicFolders.js +63 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCustomAttributesPlugin.js +20 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configCustomScriptLoadingStrategyPlugin.js +76 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configEFCTemplatePlugin.js +46 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configEnvVariables.js +51 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configHtmlWebpackPlugin.js +56 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configI18nNumericIndexPlugin.js +113 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configI18nSplitPlugin.js +41 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configIgnorePlugin.js +16 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configManifestJsonPlugin.js +44 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configMiniCSSExtractPlugin.js +24 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configProgressPlugin.js +24 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configResourceHintsPlugin.js +21 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configRtlCssPlugin.js +27 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configRuntimeResourceCleanup.js +31 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configSelectorWeightPlugin.js +28 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configServiceWorkerPlugin.js +40 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configSourceMapPlugin.js +20 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configTPHashMappingPlugin.js +32 -0
- package/lib/shared/bundler/webpack/pluginConfigs/configVariableConversionPlugin.js +25 -0
- package/lib/shared/bundler/webpack/plugins.js +77 -0
- package/lib/shared/bundler/webpack/resolvers.js +82 -0
- package/lib/shared/bundler/webpack/splitChunksConfig.js +116 -0
- package/lib/shared/bundler/webpack/statsConfig.js +30 -0
- package/lib/shared/bundler/webpack/tsLoaders.js +17 -0
- package/lib/shared/bundler/webpack/utils/index.js +31 -0
- package/lib/shared/bundler/webpack/utils/object-manipulation.js +87 -0
- package/lib/shared/bundler/webpack/utils/updateArrayWithDefault.js +34 -0
- package/lib/shared/bundler/webpack/webpackBuild.js +27 -0
- package/lib/shared/bundler/webpack/webpackConfig.js +58 -0
- package/lib/shared/commands-utils/doBasicRequirementCheck.js +17 -0
- package/lib/shared/commands-utils/getCliPath.js +39 -0
- package/lib/shared/commands-utils/index.js +29 -0
- package/lib/shared/commands-utils/log.js +13 -0
- package/lib/shared/commands-utils/readArgsFormCommandLine.js +11 -0
- package/lib/shared/commands-utils/readOptionFormCommandLine.js +11 -0
- package/lib/shared/commands-utils/spawnSyncIO.js +38 -0
- package/lib/shared/constants.js +48 -0
- package/lib/shared/fileUtils/copyFile.js +38 -0
- package/lib/shared/fileUtils/directoryIterator.js +21 -0
- package/lib/shared/fileUtils/watchRun.js +112 -0
- package/lib/shared/postcss/custom_postcss_plugins/EmptyPlugin.js +21 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/constants.js +10 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/handleIgnores.js +66 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/index.js +136 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/insertBefore.js +32 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/isPreviouslyProcessed.js +20 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/replaceUtils.js +20 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/separateHoveredSelectorAndNormalSelector.js +24 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/specialCases.js +43 -0
- package/lib/shared/postcss/custom_postcss_plugins/HoverActivePlugin/typeCheckUtils.js +52 -0
- package/lib/shared/postcss/custom_postcss_plugins/RTLSplitPlugin.js +139 -0
- package/lib/shared/postcss/custom_postcss_plugins/SelectorReplace.js +90 -0
- package/lib/shared/postcss/custom_postcss_plugins/ValueReplacer.js +57 -0
- package/lib/shared/postcss/custom_postcss_plugins/VariableModificationPlugin/index.js +347 -0
- package/lib/shared/postcss/filterPluginsAllowedForSpecficFile.js +55 -0
- package/lib/shared/postcss/getAllowedPostCssPlugins.js +30 -0
- package/lib/shared/postcss/getSpecificPostCssPlugin.js +58 -0
- package/lib/shared/postcss/runPostCssForCssFile.js +37 -0
- package/lib/shared/pre_process/runPreProcess.js +58 -0
- package/lib/shared/server/configWebpackDevMiddleware.js +41 -0
- package/lib/shared/server/corsHandling.js +30 -0
- package/lib/shared/server/getIp.js +30 -0
- package/lib/shared/server/getServerURL.js +36 -0
- package/lib/shared/server/httpsOptions.js +46 -0
- package/lib/shared/server/initExpressApp.js +19 -0
- package/lib/shared/server/initialHTMLHandling.js +99 -0
- package/lib/shared/server/mockApiHandler.js +67 -0
- package/lib/shared/server/mockServer.js +41 -0
- package/lib/shared/server/serveContextFiles.js +27 -0
- package/lib/shared/server/serverBywebpackDevMiddleware.js +35 -0
- package/lib/shared/server/startHttpServer.js +26 -0
- package/lib/shared/server/startHttpsServer.js +38 -0
- package/lib/shared/server/unwanted/addHttp2Server.js +41 -0
- package/lib/shared/server/unwanted/configWebpackDevMiddleware.js +44 -0
- package/lib/shared/server/unwanted/mockApiSupport.js +19 -0
- package/lib/shared/server/unwanted/websocketMockSetup.js +48 -0
- package/lib/shared/server/urlConcat.js +32 -0
- package/lib/shared/utils/requireLocalOrGlobal.js +81 -0
- package/lib/shared/utils/utils.js +1 -0
- package/lib/shared/utils/versionPrint.js +20 -0
- package/npm-shrinkwrap.json +5657 -0
- package/package.json +64 -0
- package/polyfillForOldNodeVersion.js +10 -0
- package/templates/app/README.MD +30 -0
- package/templates/app/package.json +12 -0
- package/templates/library/README.MD +28 -0
- package/templates/library/package.json +11 -0
- package/templates/wms/index.html +43 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
const parser = require('@babel/parser');
|
|
8
|
+
|
|
9
|
+
const generator = require('@babel/generator').default;
|
|
10
|
+
|
|
11
|
+
const {
|
|
12
|
+
walk
|
|
13
|
+
} = require('estree-walker');
|
|
14
|
+
|
|
15
|
+
const {
|
|
16
|
+
getOptions
|
|
17
|
+
} = require('loader-utils');
|
|
18
|
+
|
|
19
|
+
let collectAndCategorizeUsedI18nKeys, generateShortHash;
|
|
20
|
+
|
|
21
|
+
try {
|
|
22
|
+
collectAndCategorizeUsedI18nKeys = require('../custom_plugins/I18nSplitPlugin/utils/collectAstKeys').collectAndCategorizeUsedI18nKeys;
|
|
23
|
+
generateShortHash = require('../common/hashUtils').generateShortHash;
|
|
24
|
+
} catch (e) {
|
|
25
|
+
collectAndCategorizeUsedI18nKeys = () => ({
|
|
26
|
+
literalKeys: new Set(),
|
|
27
|
+
commentKeys: new Set()
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
generateShortHash = key => key;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const LOADER_PREFIX = '[i18nIdReplaceLoader]';
|
|
34
|
+
let numericIdMapDataCache = null;
|
|
35
|
+
let mapLoadAttemptedForPath = {};
|
|
36
|
+
|
|
37
|
+
function loadNumericIdMap(loaderContext, mapPath) {
|
|
38
|
+
if (!mapPath) {
|
|
39
|
+
loaderContext.emitWarning(new Error(`${LOADER_PREFIX} Numeric map path not provided in loader options.`));
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (numericIdMapDataCache && mapLoadAttemptedForPath[mapPath]) {
|
|
44
|
+
return numericIdMapDataCache;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
mapLoadAttemptedForPath[mapPath] = true;
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
if (fs.existsSync(mapPath)) {
|
|
51
|
+
const fileContent = fs.readFileSync(mapPath, 'utf-8');
|
|
52
|
+
const parsedData = JSON.parse(fileContent);
|
|
53
|
+
|
|
54
|
+
if (parsedData && parsedData.originalKeyToNumericId && typeof parsedData.originalKeyToNumericId === 'object') {
|
|
55
|
+
numericIdMapDataCache = parsedData.originalKeyToNumericId;
|
|
56
|
+
} else {
|
|
57
|
+
loaderContext.emitError(new Error(`${LOADER_PREFIX} Pre-generated map file (${mapPath}) is invalid or does not contain 'originalKeyToNumericId'.`));
|
|
58
|
+
numericIdMapDataCache = null;
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
loaderContext.emitError(new Error(`${LOADER_PREFIX} Pre-generated i18n numeric map file NOT FOUND at: ${mapPath}.`));
|
|
62
|
+
numericIdMapDataCache = null;
|
|
63
|
+
}
|
|
64
|
+
} catch (err) {
|
|
65
|
+
loaderContext.emitError(new Error(`${LOADER_PREFIX} Error loading or parsing pre-generated i18n map from ${mapPath}: ${err.message}`));
|
|
66
|
+
numericIdMapDataCache = null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return numericIdMapDataCache;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
module.exports = function i18nIdReplaceLoader(source, map, meta) {
|
|
73
|
+
const resourcePath = this.resourcePath;
|
|
74
|
+
this.cacheable && this.cacheable();
|
|
75
|
+
const options = getOptions(this) || {};
|
|
76
|
+
const callback = this.async();
|
|
77
|
+
const loaderContext = this;
|
|
78
|
+
|
|
79
|
+
if (!options.allI18nData || typeof options.allI18nData !== 'object' || Object.keys(options.allI18nData).length === 0) {
|
|
80
|
+
this.emitWarning(new Error(`${LOADER_PREFIX} [${resourcePath}] 'allI18nData' option is missing or empty. No replacements will be made.`));
|
|
81
|
+
return callback(null, source, map);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
let useNumericIndexing = options.useNumericIndexing !== undefined ? options.useNumericIndexing : true;
|
|
85
|
+
let localOriginalKeyToNumericIdMap = null;
|
|
86
|
+
|
|
87
|
+
if (useNumericIndexing) {
|
|
88
|
+
localOriginalKeyToNumericIdMap = loadNumericIdMap(this, options.numericMapPath);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const fallbackToHash = options.fallbackToHash !== undefined ? options.fallbackToHash : true;
|
|
92
|
+
|
|
93
|
+
try {
|
|
94
|
+
const parserOptions = {
|
|
95
|
+
sourceType: 'module',
|
|
96
|
+
plugins: ['jsx', 'typescript', 'classProperties', 'optionalChaining', 'nullishCoalescingOperator'],
|
|
97
|
+
attachComment: true,
|
|
98
|
+
sourceFilename: resourcePath
|
|
99
|
+
};
|
|
100
|
+
const astFile = parser.parse(source, parserOptions);
|
|
101
|
+
const astProgram = astFile.program;
|
|
102
|
+
const comments = astFile.comments || [];
|
|
103
|
+
const {
|
|
104
|
+
literalKeys,
|
|
105
|
+
commentKeys
|
|
106
|
+
} = collectAndCategorizeUsedI18nKeys(astProgram, comments, options.allI18nData, options.isDebug);
|
|
107
|
+
|
|
108
|
+
if (this._module) {
|
|
109
|
+
if (!this._module.buildInfo) {
|
|
110
|
+
this._module.buildInfo = {};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (literalKeys.size > 0) {
|
|
114
|
+
this._module.buildInfo.loaderIdentifiedLiteralI18nKeys = Array.from(literalKeys);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (commentKeys.size > 0) {
|
|
118
|
+
this._module.buildInfo.loaderIdentifiedCommentI18nKeys = Array.from(commentKeys);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const keysToReplaceInLiterals = literalKeys;
|
|
123
|
+
|
|
124
|
+
if (keysToReplaceInLiterals.size === 0) {
|
|
125
|
+
return callback(null, source, map);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
let replacementMade = false;
|
|
129
|
+
walk(astProgram, {
|
|
130
|
+
enter: function (node, parent, prop, index) {
|
|
131
|
+
const walkerControl = this;
|
|
132
|
+
|
|
133
|
+
if ((node.type === 'Literal' || node.type === 'StringLiteral') && typeof node.value === 'string') {
|
|
134
|
+
const originalValue = node.value;
|
|
135
|
+
|
|
136
|
+
if (keysToReplaceInLiterals.has(originalValue)) {
|
|
137
|
+
let replaced = false;
|
|
138
|
+
|
|
139
|
+
if (useNumericIndexing && localOriginalKeyToNumericIdMap) {
|
|
140
|
+
const numericId = localOriginalKeyToNumericIdMap[originalValue];
|
|
141
|
+
|
|
142
|
+
if (numericId !== undefined) {
|
|
143
|
+
const numericLiteralNode = {
|
|
144
|
+
type: 'NumericLiteral',
|
|
145
|
+
value: numericId
|
|
146
|
+
};
|
|
147
|
+
let replacementNode = numericLiteralNode;
|
|
148
|
+
|
|
149
|
+
if (parent && parent.type === 'JSXAttribute' && parent.value === node) {
|
|
150
|
+
replacementNode = {
|
|
151
|
+
type: 'JSXExpressionContainer',
|
|
152
|
+
expression: numericLiteralNode
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
walkerControl.replace(replacementNode);
|
|
157
|
+
replacementMade = true;
|
|
158
|
+
replaced = true;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (!replaced && fallbackToHash) {
|
|
163
|
+
try {
|
|
164
|
+
const hashValue = generateShortHash(originalValue);
|
|
165
|
+
const hashedStringLiteralNode = {
|
|
166
|
+
type: 'StringLiteral',
|
|
167
|
+
value: hashValue
|
|
168
|
+
};
|
|
169
|
+
walkerControl.replace(hashedStringLiteralNode);
|
|
170
|
+
replacementMade = true;
|
|
171
|
+
} catch (hashError) {
|
|
172
|
+
loaderContext.emitError(new Error(`${LOADER_PREFIX} [${resourcePath}] Error hashing key "${originalValue}": ${hashError.message}`));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
if (replacementMade) {
|
|
181
|
+
const generateOptions = {
|
|
182
|
+
sourceMaps: options.sourceMaps,
|
|
183
|
+
sourceFileName: resourcePath,
|
|
184
|
+
retainLines: false,
|
|
185
|
+
comments: true
|
|
186
|
+
};
|
|
187
|
+
const output = generator(astFile, generateOptions, source);
|
|
188
|
+
callback(null, output.code, options.sourceMaps && output.map ? output.map : map);
|
|
189
|
+
} else {
|
|
190
|
+
callback(null, source, map);
|
|
191
|
+
}
|
|
192
|
+
} catch (err) {
|
|
193
|
+
const detailedError = new Error(`${LOADER_PREFIX} [${resourcePath}] AST Processing Error: ${err.message} (Stack: ${err.stack})`);
|
|
194
|
+
|
|
195
|
+
if (err.loc) {
|
|
196
|
+
detailedError.message += ` at line ${err.loc.line}, column ${err.loc.column}`;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
callback(detailedError);
|
|
200
|
+
}
|
|
201
|
+
};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = loader;
|
|
7
|
+
exports.pitch = pitch;
|
|
8
|
+
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
|
|
11
|
+
var _SingleEntryPlugin = _interopRequireDefault(require("webpack/lib/SingleEntryPlugin"));
|
|
12
|
+
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
|
|
15
|
+
// import { getOptions } from 'loader-utils';
|
|
16
|
+
// import validateOptions from 'schema-utils';
|
|
17
|
+
const schema = {
|
|
18
|
+
'type': 'object',
|
|
19
|
+
'properties': {
|
|
20
|
+
'publicPath': {
|
|
21
|
+
'anyOf': [{
|
|
22
|
+
'type': 'string'
|
|
23
|
+
}, {
|
|
24
|
+
'instanceof': 'Function'
|
|
25
|
+
}]
|
|
26
|
+
},
|
|
27
|
+
'filename': {
|
|
28
|
+
'anyOf': [{
|
|
29
|
+
'type': 'string',
|
|
30
|
+
'minLength': 1
|
|
31
|
+
}, {
|
|
32
|
+
'instanceof': 'Function'
|
|
33
|
+
}]
|
|
34
|
+
},
|
|
35
|
+
'chunkFilename': {
|
|
36
|
+
'type': 'string',
|
|
37
|
+
'minLength': 1
|
|
38
|
+
},
|
|
39
|
+
'esModule': {
|
|
40
|
+
'type': 'boolean'
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
'additionalProperties': false
|
|
44
|
+
}; // eslint-disable-next-line
|
|
45
|
+
|
|
46
|
+
function loader() {}
|
|
47
|
+
|
|
48
|
+
function getDefaultFilename(filename) {
|
|
49
|
+
if (typeof filename === 'function') {
|
|
50
|
+
return filename;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return filename.replace(/\.([a-z]+)(\?.+)?$/i, '.worker.$1$2');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function getDefaultChunkFilename(chunkFilename) {
|
|
57
|
+
return chunkFilename.replace(/\.([a-z]+)(\?.+)?$/i, '.worker.$1$2');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function pitch(request) {
|
|
61
|
+
this.cacheable(false);
|
|
62
|
+
const options = this.getOptions(); // console.log(this.getOptions());
|
|
63
|
+
// validateOptions(schema, options, {
|
|
64
|
+
// name: 'Worker Loader',
|
|
65
|
+
// baseDataPath: 'options'
|
|
66
|
+
// });
|
|
67
|
+
|
|
68
|
+
const workerContext = {};
|
|
69
|
+
const compilerOptions = this._compiler.options || {};
|
|
70
|
+
const filename = options.filename ? options.filename : getDefaultFilename(compilerOptions.output.filename);
|
|
71
|
+
const chunkFilename = options.chunkFilename ? options.chunkFilename : getDefaultChunkFilename(compilerOptions.output.chunkFilename);
|
|
72
|
+
const publicPath = options.publicPath ? options.publicPath : compilerOptions.output.publicPath;
|
|
73
|
+
workerContext.options = {
|
|
74
|
+
filename,
|
|
75
|
+
chunkFilename,
|
|
76
|
+
publicPath,
|
|
77
|
+
globalObject: 'self'
|
|
78
|
+
};
|
|
79
|
+
workerContext.compiler = this._compilation.createChildCompiler(`worker-loader ${request}`, workerContext.options);
|
|
80
|
+
/*
|
|
81
|
+
new WebWorkerTemplatePlugin().apply(workerContext.compiler);
|
|
82
|
+
|
|
83
|
+
if (compilerOptions.externals) {
|
|
84
|
+
new ExternalsPlugin(
|
|
85
|
+
getExternalsType(compilerOptions),
|
|
86
|
+
compilerOptions.externals
|
|
87
|
+
).apply(workerContext.compiler);
|
|
88
|
+
} */
|
|
89
|
+
|
|
90
|
+
new _SingleEntryPlugin.default(this.context, `!!${request}`, _path.default.parse(this.resourcePath).name).apply(workerContext.compiler);
|
|
91
|
+
workerContext.request = request;
|
|
92
|
+
const cb = this.async();
|
|
93
|
+
workerContext.compiler.runAsChild((errorArg, entries, compilation) => {
|
|
94
|
+
let error = errorArg;
|
|
95
|
+
|
|
96
|
+
if (!error && compilation.errors && compilation.errors.length) {
|
|
97
|
+
// eslint-disable-next-line
|
|
98
|
+
error = compilation.errors[0];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const entry = entries && entries[0] && entries[0].files.values().next().value;
|
|
102
|
+
|
|
103
|
+
if (!error && !entry) {
|
|
104
|
+
error = Error(`WorkerPlugin: no entry for ${request}`);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (error) {
|
|
108
|
+
return cb(error);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function workerCode() {
|
|
112
|
+
let blob;
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
blob = new Blob([`importScripts('${this.workerUrl}');`], {
|
|
116
|
+
'type': 'application/javascript'
|
|
117
|
+
});
|
|
118
|
+
} catch (e1) {
|
|
119
|
+
throw new Error(e1);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
let url = window.URL || window.webkitURL;
|
|
123
|
+
let blobUrl = url.createObjectURL(blob);
|
|
124
|
+
let worker = new Worker(blobUrl);
|
|
125
|
+
return worker;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return cb(null, `${options.esModule ? 'export default' : 'module.exports ='} {\n
|
|
129
|
+
workerUrl: __webpack_public_path__ + ${JSON.stringify(entry)}, \n
|
|
130
|
+
getInstance: ${workerCode} \n
|
|
131
|
+
}`);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.optimizationConfig = optimizationConfig;
|
|
7
|
+
|
|
8
|
+
var _terserWebpackPlugin = _interopRequireDefault(require("terser-webpack-plugin"));
|
|
9
|
+
|
|
10
|
+
var _nameTemplates = require("./common/nameTemplates");
|
|
11
|
+
|
|
12
|
+
var _hashUtils = require("./custom_plugins/I18nSplitPlugin/utils/hashUtils");
|
|
13
|
+
|
|
14
|
+
var _configCSSMinifierPlugin = require("./pluginConfigs/configCSSMinifierPlugin");
|
|
15
|
+
|
|
16
|
+
var _splitChunksConfig = require("./splitChunksConfig");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
function optimizationConfig(options) {
|
|
21
|
+
const {
|
|
22
|
+
changeRuntimeChunkChar
|
|
23
|
+
} = options;
|
|
24
|
+
const {
|
|
25
|
+
chunkSplitEnable
|
|
26
|
+
} = options.i18nChunkSplit;
|
|
27
|
+
const i18nChunkFilename = (0, _nameTemplates.nameTemplates)('i18njs', options);
|
|
28
|
+
const chunkFilenameHasContentHash = (0, _hashUtils.hasContentHash)(i18nChunkFilename);
|
|
29
|
+
/**
|
|
30
|
+
* NOTE: we only need multiple runtime files when we use contentHash
|
|
31
|
+
* other wise we don't need multiple runtime files based locale
|
|
32
|
+
* that's why we added chunkSplitEnable && chunkFilenameHasContentHash logic
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
const suffix = // chunkSplitEnable ? '_[locale]' : '';
|
|
36
|
+
chunkSplitEnable && chunkFilenameHasContentHash ? '_[locale]' : '';
|
|
37
|
+
const char = changeRuntimeChunkChar;
|
|
38
|
+
const excludeList = options.optimization.jsExcludePath;
|
|
39
|
+
return {
|
|
40
|
+
splitChunks: (0, _splitChunksConfig.splitChunksConfig)(options),
|
|
41
|
+
minimizer: [// For webpack@5 you can use the `...` syntax to extend existing minimizers (i.e. `terser-webpack-plugin`), uncomment the next line
|
|
42
|
+
// '...',
|
|
43
|
+
excludeList !== '' ? new _terserWebpackPlugin.default({
|
|
44
|
+
exclude: excludeList,
|
|
45
|
+
extractComments: false // Do not extract comments to .LICENSE.txt files
|
|
46
|
+
|
|
47
|
+
}) : new _terserWebpackPlugin.default({
|
|
48
|
+
extractComments: false // Do not extract comments to .LICENSE.txt files
|
|
49
|
+
|
|
50
|
+
}), (0, _configCSSMinifierPlugin.configCSSMinifierPlugin)(options)].filter(Boolean),
|
|
51
|
+
moduleIds: 'named',
|
|
52
|
+
runtimeChunk: {
|
|
53
|
+
name: entrypoint => `runtime${char}${entrypoint.name}${suffix}`
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.outputConfig = outputConfig;
|
|
7
|
+
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
|
|
10
|
+
var _constants = require("../../constants");
|
|
11
|
+
|
|
12
|
+
var _nameTemplates = require("./common/nameTemplates");
|
|
13
|
+
|
|
14
|
+
var _modeUtils = require("./common/modeUtils");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
function outputConfig(options) {
|
|
19
|
+
const {
|
|
20
|
+
output,
|
|
21
|
+
publicPath,
|
|
22
|
+
htmlTemplate
|
|
23
|
+
} = options;
|
|
24
|
+
const outputO = {
|
|
25
|
+
filename: (0, _nameTemplates.nameTemplates)('js', options),
|
|
26
|
+
chunkFilename: (0, _nameTemplates.nameTemplates)('chunkjs', options),
|
|
27
|
+
chunkLoadingGlobal: (0, _modeUtils.getGlobalCacheStorageName)(options),
|
|
28
|
+
publicPath,
|
|
29
|
+
// clean: true,
|
|
30
|
+
path: _path.default.resolve(_constants.appPath, output)
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
if (htmlTemplate.crossorigin) {
|
|
34
|
+
outputO.crossOriginLoading = 'anonymous';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return outputO;
|
|
38
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.configBundleAnalyzer = configBundleAnalyzer;
|
|
7
|
+
|
|
8
|
+
var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
|
|
9
|
+
|
|
10
|
+
var _modeUtils = require("../common/modeUtils");
|
|
11
|
+
|
|
12
|
+
/* eslint-disable no-use-before-define */
|
|
13
|
+
function configBundleAnalyzer(options) {
|
|
14
|
+
const mode = (0, _modeUtils.getWebpackMode)(options);
|
|
15
|
+
|
|
16
|
+
if ((0, _modeUtils.isProductionMode)(mode) && options.bundleAnalyze) {
|
|
17
|
+
const bundleAnalyzerOptions = getBundleAnalyzerOptions(options);
|
|
18
|
+
return new _webpackBundleAnalyzer.BundleAnalyzerPlugin(bundleAnalyzerOptions);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return null;
|
|
22
|
+
} // eslint-disable-next-line no-unused-vars
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
function getBundleAnalyzerOptions(options) {
|
|
26
|
+
return {
|
|
27
|
+
analyzerMode: 'static',
|
|
28
|
+
// generateStatsFile: false,
|
|
29
|
+
openAnalyzer: false // statsOptions: {
|
|
30
|
+
// source: false,
|
|
31
|
+
// normal: true,
|
|
32
|
+
// chunks: false,
|
|
33
|
+
// chunkGroups: false,
|
|
34
|
+
// module: false,
|
|
35
|
+
// assets: true,
|
|
36
|
+
// assetsSort: 'name'
|
|
37
|
+
// }
|
|
38
|
+
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.configBundleIntegrityReport = configBundleIntegrityReport;
|
|
7
|
+
|
|
8
|
+
var _modeUtils = require("../common/modeUtils");
|
|
9
|
+
|
|
10
|
+
var _BundleIntegrityReport = require("../custom_plugins/BundleIntegrityReport");
|
|
11
|
+
|
|
12
|
+
function configBundleIntegrityReport(options) {
|
|
13
|
+
const webpackMode = (0, _modeUtils.getWebpackMode)(options);
|
|
14
|
+
const isProduction = (0, _modeUtils.isProductionMode)(webpackMode);
|
|
15
|
+
const {
|
|
16
|
+
enable: statsEnable
|
|
17
|
+
} = options.stats;
|
|
18
|
+
|
|
19
|
+
if (isProduction && statsEnable) {
|
|
20
|
+
return new _BundleIntegrityReport.BundleIntegrityReport({
|
|
21
|
+
fileName: options.stats.fileName || 'bundle-report-integrity.json',
|
|
22
|
+
excludeKeysInReport: options.stats.excludeKeys || [],
|
|
23
|
+
options: {
|
|
24
|
+
preset: 'verbose',
|
|
25
|
+
...options.stats.options,
|
|
26
|
+
assets: true,
|
|
27
|
+
chunks: true,
|
|
28
|
+
modules: true,
|
|
29
|
+
builtAt: true,
|
|
30
|
+
hash: true
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.configCSSMinifierPlugin = configCSSMinifierPlugin;
|
|
7
|
+
|
|
8
|
+
var _cssMinimizerWebpackPlugin = _interopRequireDefault(require("css-minimizer-webpack-plugin"));
|
|
9
|
+
|
|
10
|
+
var _modeUtils = require("../common/modeUtils");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
// import UglifyCSSPlugin from '../custom_plugins/UglifyCSSPlugin';
|
|
15
|
+
// eslint-disable-next-line no-unused-vars
|
|
16
|
+
function configCSSMinifierPlugin(options) {
|
|
17
|
+
const excludeList = options.optimization.cssExcludePath;
|
|
18
|
+
|
|
19
|
+
if ((0, _modeUtils.isNotProduction)(options)) {
|
|
20
|
+
return null;
|
|
21
|
+
} // return null;
|
|
22
|
+
// return new UglifyCSSPlugin();
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
return excludeList !== '' ? new _cssMinimizerWebpackPlugin.default({
|
|
26
|
+
exclude: excludeList
|
|
27
|
+
}) : new _cssMinimizerWebpackPlugin.default();
|
|
28
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.configCdnChangePlugin = configCdnChangePlugin;
|
|
7
|
+
|
|
8
|
+
var _modeUtils = require("../common/modeUtils");
|
|
9
|
+
|
|
10
|
+
var _CdnChangePlugin = _interopRequireDefault(require("../custom_plugins/CdnChangePlugin"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
function configCdnChangePlugin(options) {
|
|
15
|
+
const {
|
|
16
|
+
cdnMapping,
|
|
17
|
+
mode
|
|
18
|
+
} = options;
|
|
19
|
+
|
|
20
|
+
if (!cdnMapping.isCdnEnabled || (0, _modeUtils.isDevelopmentMode)(mode)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return new _CdnChangePlugin.default({ ...cdnMapping,
|
|
25
|
+
createSeparateSMap: options.createSeparateSMap
|
|
26
|
+
});
|
|
27
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.configCopyPublicFolders = configCopyPublicFolders;
|
|
7
|
+
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
|
|
10
|
+
var _copyWebpackPlugin = _interopRequireDefault(require("copy-webpack-plugin"));
|
|
11
|
+
|
|
12
|
+
var _fs = require("fs");
|
|
13
|
+
|
|
14
|
+
var _updateArrayWithDefault = require("../utils/updateArrayWithDefault");
|
|
15
|
+
|
|
16
|
+
var _constants = require("../../../constants");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
const defaultPublicFolders = [{
|
|
21
|
+
// source must be relative path not absolute path
|
|
22
|
+
source: 'public',
|
|
23
|
+
// target is the path that this copied file output path
|
|
24
|
+
target: 'public',
|
|
25
|
+
toType: 'dir'
|
|
26
|
+
}];
|
|
27
|
+
|
|
28
|
+
function folderPatterns(publicFolders) {
|
|
29
|
+
return publicFolders.map(conf => {
|
|
30
|
+
const publicFolderActualPath = (0, _constants.joinWithAppPath)(conf.source);
|
|
31
|
+
|
|
32
|
+
if (!conf.source || !conf.target || _path.default.isAbsolute(conf.source) || !(0, _fs.existsSync)(publicFolderActualPath)) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return {
|
|
37
|
+
from: publicFolderActualPath,
|
|
38
|
+
to: conf.target,
|
|
39
|
+
toType: conf.toType || 'dir'
|
|
40
|
+
};
|
|
41
|
+
}).filter(Boolean);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function configCopyPublicFolders(options) {
|
|
45
|
+
let {
|
|
46
|
+
publicFolders
|
|
47
|
+
} = options;
|
|
48
|
+
publicFolders = (0, _updateArrayWithDefault.updateArrayWithDefault)(publicFolders, defaultPublicFolders);
|
|
49
|
+
|
|
50
|
+
if (publicFolders.length === 0) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const patterns = folderPatterns(publicFolders);
|
|
55
|
+
|
|
56
|
+
if (patterns.length === 0) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return new _copyWebpackPlugin.default({
|
|
61
|
+
patterns
|
|
62
|
+
});
|
|
63
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.configCustomAttributesPlugin = configCustomAttributesPlugin;
|
|
7
|
+
|
|
8
|
+
var _custom_attribute_plugin = require("../custom_plugins/custom_attribute_plugin");
|
|
9
|
+
|
|
10
|
+
function configCustomAttributesPlugin(options) {
|
|
11
|
+
const {
|
|
12
|
+
customAttributes
|
|
13
|
+
} = options;
|
|
14
|
+
|
|
15
|
+
if (customAttributes.enable) {
|
|
16
|
+
return new _custom_attribute_plugin.CustomAttributesPlugin(customAttributes);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return null;
|
|
20
|
+
}
|