@docusaurus/core 2.0.0-beta.2 → 2.0.0-beta.20
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/bin/beforeCli.mjs +138 -0
- package/bin/docusaurus.mjs +228 -0
- package/lib/babel/preset.d.ts +8 -3
- package/lib/babel/preset.js +8 -7
- package/lib/client/.eslintrc.js +2 -4
- package/lib/client/App.d.ts +2 -3
- package/lib/client/App.js +30 -27
- package/lib/client/BaseUrlIssueBanner/index.d.ts +27 -0
- package/lib/client/{baseUrlIssueBanner/BaseUrlIssueBanner.js → BaseUrlIssueBanner/index.js} +24 -14
- package/lib/client/{baseUrlIssueBanner → BaseUrlIssueBanner}/styles.module.css +0 -0
- package/lib/client/ClientLifecyclesDispatcher.d.ts +16 -0
- package/lib/client/ClientLifecyclesDispatcher.js +39 -0
- package/lib/client/LinksCollector.d.ts +3 -3
- package/lib/client/LinksCollector.js +8 -13
- package/lib/client/PendingNavigation.d.ts +17 -3
- package/lib/client/PendingNavigation.js +39 -72
- package/lib/client/{baseUrlIssueBanner/BaseUrlIssueBanner.d.ts → SiteMetadataDefaults.d.ts} +1 -2
- package/lib/client/SiteMetadataDefaults.js +19 -0
- package/lib/{choosePort.d.ts → client/browserContext.d.ts} +5 -5
- package/lib/client/browserContext.js +22 -0
- package/lib/client/clientEntry.js +14 -9
- package/lib/client/docusaurus.d.ts +11 -5
- package/lib/client/docusaurus.js +29 -42
- package/lib/client/docusaurusContext.d.ts +12 -0
- package/lib/client/docusaurusContext.js +25 -0
- package/lib/client/exports/BrowserOnly.d.ts +3 -5
- package/lib/client/exports/BrowserOnly.js +14 -8
- package/lib/client/exports/ComponentCreator.d.ts +1 -2
- package/lib/client/exports/ComponentCreator.js +67 -41
- package/lib/client/exports/ErrorBoundary.d.ts +18 -0
- package/lib/client/exports/ErrorBoundary.js +35 -0
- package/lib/client/exports/Head.d.ts +2 -3
- package/lib/client/exports/Head.js +3 -4
- package/lib/client/exports/Interpolate.d.ts +2 -2
- package/lib/client/exports/Interpolate.js +20 -49
- package/lib/client/exports/Link.d.ts +4 -10
- package/lib/client/exports/Link.js +39 -39
- package/lib/client/exports/Translate.d.ts +1 -1
- package/lib/client/exports/Translate.js +14 -9
- package/lib/client/exports/constants.js +1 -11
- package/lib/client/exports/isInternalUrl.js +1 -1
- package/lib/client/exports/renderRoutes.d.ts +1 -2
- package/lib/client/exports/renderRoutes.js +1 -2
- package/lib/client/exports/router.d.ts +1 -1
- package/lib/client/exports/router.js +1 -1
- package/lib/client/exports/useBaseUrl.js +11 -14
- package/lib/client/exports/useDocusaurusContext.d.ts +2 -3
- package/lib/client/exports/useDocusaurusContext.js +3 -9
- package/lib/client/exports/useGlobalData.d.ts +4 -3
- package/lib/client/exports/useGlobalData.js +6 -10
- package/lib/{server/versions/__tests/index.test.d.ts → client/exports/useIsBrowser.d.ts} +1 -1
- package/lib/client/exports/useIsBrowser.js +11 -0
- package/lib/client/exports/useRouteContext.d.ts +8 -0
- package/lib/client/exports/useRouteContext.js +15 -0
- package/lib/client/flat.d.ts +12 -2
- package/lib/client/flat.js +19 -15
- package/lib/client/normalizeLocation.d.ts +2 -5
- package/lib/client/normalizeLocation.js +14 -10
- package/lib/client/prefetch.d.ts +1 -2
- package/lib/client/prefetch.js +11 -31
- package/lib/client/preload.d.ts +3 -4
- package/lib/client/preload.js +7 -12
- package/lib/client/routeContext.d.ts +13 -0
- package/lib/client/routeContext.js +31 -0
- package/lib/client/serverEntry.d.ts +10 -0
- package/lib/client/serverEntry.js +90 -142
- package/lib/client/theme-fallback/Error/index.d.ts +10 -0
- package/lib/client/theme-fallback/Error/index.js +45 -0
- package/lib/client/theme-fallback/Layout/index.d.ts +10 -0
- package/lib/client/theme-fallback/Layout/index.js +2 -26
- package/lib/client/theme-fallback/Loading/index.d.ts +9 -0
- package/lib/client/theme-fallback/Loading/index.js +49 -115
- package/lib/client/{exports/context.js → theme-fallback/NotFound/index.d.ts} +2 -2
- package/lib/client/theme-fallback/NotFound/index.js +19 -18
- package/lib/client/theme-fallback/Root/index.d.ts +10 -0
- package/lib/client/theme-fallback/Root/index.js +2 -6
- package/lib/{server/html-tags/htmlTags.d.ts → client/theme-fallback/SiteMetadata/index.d.ts} +2 -1
- package/lib/client/theme-fallback/SiteMetadata/index.js +10 -0
- package/lib/commands/build.d.ts +6 -2
- package/lib/commands/build.js +77 -61
- package/lib/commands/clear.d.ts +7 -1
- package/lib/commands/clear.js +32 -20
- package/lib/commands/deploy.d.ts +5 -2
- package/lib/commands/deploy.js +83 -71
- package/lib/commands/external.d.ts +2 -2
- package/lib/commands/external.js +6 -11
- package/lib/commands/serve.d.ts +7 -2
- package/lib/commands/serve.js +20 -26
- package/lib/commands/start.d.ts +8 -2
- package/lib/commands/start.js +105 -91
- package/lib/commands/swizzle/actions.d.ts +23 -0
- package/lib/commands/swizzle/actions.js +102 -0
- package/lib/commands/swizzle/common.d.ts +33 -0
- package/lib/commands/swizzle/common.js +56 -0
- package/lib/commands/swizzle/components.d.ts +29 -0
- package/lib/commands/swizzle/components.js +200 -0
- package/lib/commands/swizzle/config.d.ts +10 -0
- package/lib/commands/swizzle/config.js +83 -0
- package/lib/{server/client-modules/index.d.ts → commands/swizzle/context.d.ts} +2 -2
- package/lib/commands/swizzle/context.js +24 -0
- package/lib/commands/swizzle/index.d.ts +8 -0
- package/lib/commands/swizzle/index.js +116 -0
- package/lib/commands/swizzle/prompts.d.ts +12 -0
- package/lib/commands/swizzle/prompts.js +110 -0
- package/lib/{client/exports/context.d.ts → commands/swizzle/tables.d.ts} +3 -4
- package/lib/commands/swizzle/tables.js +113 -0
- package/lib/commands/swizzle/themes.d.ts +20 -0
- package/lib/commands/swizzle/themes.js +106 -0
- package/lib/commands/writeHeadingIds.d.ts +2 -6
- package/lib/commands/writeHeadingIds.js +21 -81
- package/lib/commands/writeTranslations.d.ts +4 -5
- package/lib/commands/writeTranslations.js +39 -20
- package/lib/index.d.ts +9 -9
- package/lib/index.js +14 -14
- package/lib/server/brokenLinks.d.ts +4 -17
- package/lib/server/brokenLinks.js +65 -54
- package/lib/server/clientModules.d.ts +12 -0
- package/lib/server/clientModules.js +20 -0
- package/lib/server/config.d.ts +5 -2
- package/lib/server/config.js +14 -6
- package/lib/server/configValidation.d.ts +2 -2
- package/lib/server/configValidation.js +76 -35
- package/lib/server/getHostPort.d.ts +14 -0
- package/lib/server/getHostPort.js +79 -0
- package/lib/server/htmlTags.d.ts +12 -0
- package/lib/server/htmlTags.js +62 -0
- package/lib/server/i18n.d.ts +3 -13
- package/lib/server/i18n.js +19 -55
- package/lib/server/index.d.ts +28 -13
- package/lib/server/index.js +79 -163
- package/lib/server/plugins/configs.d.ts +51 -0
- package/lib/server/plugins/configs.js +101 -0
- package/lib/server/plugins/index.d.ts +9 -8
- package/lib/server/plugins/index.js +71 -131
- package/lib/server/plugins/init.d.ts +6 -5
- package/lib/server/plugins/init.js +43 -108
- package/lib/server/plugins/moduleShorthand.d.ts +9 -0
- package/lib/server/plugins/moduleShorthand.js +46 -0
- package/lib/server/plugins/pluginIds.d.ts +5 -1
- package/lib/server/plugins/pluginIds.js +12 -7
- package/lib/server/plugins/presets.d.ts +12 -0
- package/lib/server/plugins/presets.js +49 -0
- package/lib/server/plugins/routeConfig.d.ts +11 -0
- package/lib/server/plugins/routeConfig.js +54 -0
- package/lib/server/plugins/synthetic.d.ts +20 -0
- package/lib/server/plugins/synthetic.js +112 -0
- package/lib/server/routes.d.ts +39 -7
- package/lib/server/routes.js +185 -95
- package/lib/server/siteMetadata.d.ts +12 -0
- package/lib/server/siteMetadata.js +81 -0
- package/lib/server/translations/translations.d.ts +11 -14
- package/lib/server/translations/translations.js +36 -60
- package/lib/server/translations/translationsExtractor.d.ts +10 -4
- package/lib/server/translations/translationsExtractor.js +159 -121
- package/lib/server/utils.d.ts +9 -3
- package/lib/server/utils.js +7 -9
- package/lib/webpack/aliases/index.d.ts +34 -0
- package/lib/webpack/aliases/index.js +106 -0
- package/lib/webpack/base.d.ts +3 -4
- package/lib/webpack/base.js +41 -53
- package/lib/webpack/client.d.ts +3 -3
- package/lib/webpack/client.js +12 -19
- package/lib/webpack/plugins/ChunkAssetPlugin.d.ts +13 -3
- package/lib/webpack/plugins/ChunkAssetPlugin.js +24 -17
- package/lib/webpack/plugins/CleanWebpackPlugin.d.ts +8 -8
- package/lib/webpack/plugins/CleanWebpackPlugin.js +9 -15
- package/lib/webpack/plugins/LogPlugin.d.ts +1 -1
- package/lib/webpack/plugins/LogPlugin.js +4 -5
- package/lib/webpack/plugins/WaitPlugin.d.ts +3 -3
- package/lib/webpack/plugins/WaitPlugin.js +1 -1
- package/lib/webpack/server.d.ts +5 -5
- package/lib/webpack/server.js +15 -7
- package/lib/{client → webpack}/templates/index.html.template.ejs +0 -0
- package/lib/webpack/templates/ssr.html.template.d.ts +8 -0
- package/lib/{client → webpack}/templates/ssr.html.template.js +3 -2
- package/lib/webpack/utils.d.ts +15 -31
- package/lib/webpack/utils.js +57 -176
- package/package.json +75 -73
- package/bin/docusaurus.js +0 -325
- package/lib/.tsbuildinfo +0 -1
- package/lib/choosePort.js +0 -105
- package/lib/client/.tsbuildinfo +0 -1
- package/lib/client/client-lifecycles-dispatcher.d.ts +0 -12
- package/lib/client/client-lifecycles-dispatcher.js +0 -27
- package/lib/client/nprogress.css +0 -36
- package/lib/commands/buildRemoteBranchUrl.d.ts +0 -7
- package/lib/commands/buildRemoteBranchUrl.js +0 -27
- package/lib/commands/commandUtils.d.ts +0 -3
- package/lib/commands/commandUtils.js +0 -21
- package/lib/commands/swizzle.d.ts +0 -9
- package/lib/commands/swizzle.js +0 -245
- package/lib/constants.d.ts +0 -18
- package/lib/constants.js +0 -23
- package/lib/server/client-modules/index.js +0 -14
- package/lib/server/duplicateRoutes.d.ts +0 -10
- package/lib/server/duplicateRoutes.js +0 -38
- package/lib/server/html-tags/htmlTags.js +0 -40
- package/lib/server/html-tags/index.d.ts +0 -9
- package/lib/server/html-tags/index.js +0 -43
- package/lib/server/loadSetup.d.ts +0 -9
- package/lib/server/loadSetup.js +0 -25
- package/lib/server/plugins/applyRouteTrailingSlash.d.ts +0 -8
- package/lib/server/plugins/applyRouteTrailingSlash.js +0 -19
- package/lib/server/presets/index.d.ts +0 -11
- package/lib/server/presets/index.js +0 -48
- package/lib/server/themes/alias.d.ts +0 -8
- package/lib/server/themes/alias.js +0 -40
- package/lib/server/themes/index.d.ts +0 -12
- package/lib/server/themes/index.js +0 -47
- package/lib/server/versions/__fixtures__/dummy-plugin.js +0 -0
- package/lib/server/versions/__fixtures__/package.json +0 -3
- package/lib/server/versions/__tests/index.test.js +0 -25
- package/lib/server/versions/index.d.ts +0 -10
- package/lib/server/versions/index.js +0 -50
- package/lib/webpack/react-dev-utils-webpack5/README.md +0 -11
- package/lib/webpack/react-dev-utils-webpack5/evalSourceMapMiddleware.js +0 -57
- package/lib/webpack/react-dev-utils-webpack5/formatWebpackMessages.js +0 -138
- package/lib/webpack/react-dev-utils-webpack5/webpackHotDevClient.js +0 -285
- package/lib/webpack/sharedModuleAliases.d.ts +0 -10
- package/lib/webpack/sharedModuleAliases.js +0 -18
- package/tsconfig.client.json +0 -13
- package/tsconfig.json +0 -13
package/lib/webpack/base.js
CHANGED
|
@@ -6,59 +6,42 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.createBaseConfig = exports.
|
|
9
|
+
exports.createBaseConfig = exports.excludeJS = exports.clientDir = void 0;
|
|
10
10
|
const tslib_1 = require("tslib");
|
|
11
11
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
12
12
|
const mini_css_extract_plugin_1 = tslib_1.__importDefault(require("mini-css-extract-plugin"));
|
|
13
13
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
14
14
|
const utils_1 = require("./utils");
|
|
15
|
-
const
|
|
16
|
-
const sharedModuleAliases_1 = tslib_1.__importDefault(require("./sharedModuleAliases"));
|
|
17
|
-
const themes_1 = require("../server/themes");
|
|
15
|
+
const aliases_1 = require("./aliases");
|
|
18
16
|
const utils_2 = require("@docusaurus/utils");
|
|
19
|
-
const CSS_REGEX = /\.css
|
|
20
|
-
const CSS_MODULE_REGEX = /\.module\.css
|
|
17
|
+
const CSS_REGEX = /\.css$/i;
|
|
18
|
+
const CSS_MODULE_REGEX = /\.module\.css$/i;
|
|
21
19
|
exports.clientDir = path_1.default.join(__dirname, '..', 'client');
|
|
22
20
|
const LibrariesToTranspile = [
|
|
23
|
-
'copy-text-to-clipboard', //
|
|
21
|
+
'copy-text-to-clipboard', // Contains optional catch binding, incompatible with recent versions of Edge
|
|
24
22
|
];
|
|
25
23
|
const LibrariesToTranspileRegex = new RegExp(LibrariesToTranspile.map((libName) => `(node_modules/${libName})`).join('|'));
|
|
26
24
|
function excludeJS(modulePath) {
|
|
27
|
-
//
|
|
25
|
+
// Always transpile client dir
|
|
28
26
|
if (modulePath.startsWith(exports.clientDir)) {
|
|
29
27
|
return false;
|
|
30
28
|
}
|
|
31
29
|
// Don't transpile node_modules except any docusaurus npm package
|
|
32
30
|
return (/node_modules/.test(modulePath) &&
|
|
33
|
-
!/
|
|
31
|
+
!/docusaurus(?:(?!node_modules).)*\.jsx?$/.test(modulePath) &&
|
|
34
32
|
!LibrariesToTranspileRegex.test(modulePath));
|
|
35
33
|
}
|
|
36
34
|
exports.excludeJS = excludeJS;
|
|
37
|
-
function
|
|
38
|
-
const dirPath = path_1.default.resolve(__dirname, '../client/exports');
|
|
39
|
-
const extensions = ['.js', '.ts', '.tsx'];
|
|
40
|
-
const aliases = {};
|
|
41
|
-
fs_extra_1.default.readdirSync(dirPath)
|
|
42
|
-
.filter((fileName) => extensions.includes(path_1.default.extname(fileName)))
|
|
43
|
-
.forEach((fileName) => {
|
|
44
|
-
const fileNameWithoutExtension = path_1.default.basename(fileName, path_1.default.extname(fileName));
|
|
45
|
-
const aliasName = `@docusaurus/${fileNameWithoutExtension}`;
|
|
46
|
-
aliases[aliasName] = path_1.default.resolve(dirPath, fileName);
|
|
47
|
-
});
|
|
48
|
-
return aliases;
|
|
49
|
-
}
|
|
50
|
-
exports.getDocusaurusAliases = getDocusaurusAliases;
|
|
51
|
-
function createBaseConfig(props, isServer, minify = true) {
|
|
52
|
-
var _a;
|
|
35
|
+
async function createBaseConfig(props, isServer, minify = true) {
|
|
53
36
|
const { outDir, siteDir, siteConfig, siteConfigPath, baseUrl, generatedFilesDir, routesPaths, siteMetadata, plugins, } = props;
|
|
54
37
|
const totalPages = routesPaths.length;
|
|
55
38
|
const isProd = process.env.NODE_ENV === 'production';
|
|
56
39
|
const minimizeEnabled = minify && isProd && !isServer;
|
|
57
40
|
const useSimpleCssMinifier = process.env.USE_SIMPLE_CSS_MINIFIER === 'true';
|
|
58
|
-
const fileLoaderUtils =
|
|
41
|
+
const fileLoaderUtils = (0, utils_2.getFileLoaderUtils)();
|
|
59
42
|
const name = isServer ? 'server' : 'client';
|
|
60
43
|
const mode = isProd ? 'production' : 'development';
|
|
61
|
-
const themeAliases =
|
|
44
|
+
const themeAliases = await (0, aliases_1.loadThemeAliases)({ siteDir, plugins });
|
|
62
45
|
return {
|
|
63
46
|
mode,
|
|
64
47
|
name,
|
|
@@ -71,16 +54,19 @@ function createBaseConfig(props, isServer, minify = true) {
|
|
|
71
54
|
// When version string changes, cache is evicted
|
|
72
55
|
version: [
|
|
73
56
|
siteMetadata.docusaurusVersion,
|
|
74
|
-
// Webpack does not evict the cache correctly on alias/swizzle change,
|
|
57
|
+
// Webpack does not evict the cache correctly on alias/swizzle change,
|
|
58
|
+
// so we force eviction.
|
|
75
59
|
// See https://github.com/webpack/webpack/issues/13627
|
|
76
|
-
utils_2.md5Hash(JSON.stringify(themeAliases)),
|
|
60
|
+
(0, utils_2.md5Hash)(JSON.stringify(themeAliases)),
|
|
77
61
|
].join('-'),
|
|
78
|
-
// When one of those modules/dependencies change (including transitive
|
|
62
|
+
// When one of those modules/dependencies change (including transitive
|
|
63
|
+
// deps), cache is invalidated
|
|
79
64
|
buildDependencies: {
|
|
80
65
|
config: [
|
|
81
66
|
__filename,
|
|
82
67
|
path_1.default.join(__dirname, isServer ? 'server.js' : 'client.js'),
|
|
83
|
-
// Docusaurus config changes can affect MDX/JSX compilation, so we'd
|
|
68
|
+
// Docusaurus config changes can affect MDX/JSX compilation, so we'd
|
|
69
|
+
// rather evict the cache.
|
|
84
70
|
// See https://github.com/questdb/questdb.io/issues/493
|
|
85
71
|
siteConfigPath,
|
|
86
72
|
],
|
|
@@ -94,6 +80,7 @@ function createBaseConfig(props, isServer, minify = true) {
|
|
|
94
80
|
? 'assets/js/[name].[contenthash:8].js'
|
|
95
81
|
: '[name].js',
|
|
96
82
|
publicPath: baseUrl,
|
|
83
|
+
hashFunction: 'xxhash64',
|
|
97
84
|
},
|
|
98
85
|
// Don't throw warning when asset created is over 250kb
|
|
99
86
|
performance: {
|
|
@@ -108,28 +95,25 @@ function createBaseConfig(props, isServer, minify = true) {
|
|
|
108
95
|
// Allow resolution of url("/fonts/xyz.ttf") by webpack
|
|
109
96
|
// See https://webpack.js.org/configuration/resolve/#resolveroots
|
|
110
97
|
// See https://github.com/webpack-contrib/css-loader/issues/1256
|
|
111
|
-
path_1.default.
|
|
98
|
+
...siteConfig.staticDirectories.map((dir) => path_1.default.resolve(siteDir, dir)),
|
|
112
99
|
siteDir,
|
|
113
100
|
process.cwd(),
|
|
114
101
|
],
|
|
115
102
|
alias: {
|
|
116
|
-
...sharedModuleAliases_1.default,
|
|
117
103
|
'@site': siteDir,
|
|
118
104
|
'@generated': generatedFilesDir,
|
|
119
|
-
|
|
120
|
-
// so we use fine-grained aliases instead
|
|
121
|
-
// '@docusaurus': path.resolve(__dirname, '../client/exports'),
|
|
122
|
-
...getDocusaurusAliases(),
|
|
105
|
+
...(await (0, aliases_1.loadDocusaurusAliases)()),
|
|
123
106
|
...themeAliases,
|
|
124
107
|
},
|
|
125
|
-
// This allows you to set a fallback for where Webpack should look for
|
|
126
|
-
// We want `@docusaurus/core` own dependencies/`node_modules` to
|
|
127
|
-
// Example: if there is core-js@3 in user's
|
|
128
|
-
// core-js@2, we should use
|
|
108
|
+
// This allows you to set a fallback for where Webpack should look for
|
|
109
|
+
// modules. We want `@docusaurus/core` own dependencies/`node_modules` to
|
|
110
|
+
// "win" if there is conflict. Example: if there is core-js@3 in user's
|
|
111
|
+
// own node_modules, but core depends on core-js@2, we should use
|
|
112
|
+
// core-js@2.
|
|
129
113
|
modules: [
|
|
130
114
|
path_1.default.resolve(__dirname, '..', '..', 'node_modules'),
|
|
131
115
|
'node_modules',
|
|
132
|
-
path_1.default.resolve(fs_extra_1.default.
|
|
116
|
+
path_1.default.resolve(await fs_extra_1.default.realpath(process.cwd()), 'node_modules'),
|
|
133
117
|
],
|
|
134
118
|
},
|
|
135
119
|
resolveLoader: {
|
|
@@ -137,18 +121,21 @@ function createBaseConfig(props, isServer, minify = true) {
|
|
|
137
121
|
},
|
|
138
122
|
optimization: {
|
|
139
123
|
removeAvailableModules: false,
|
|
140
|
-
// Only minimize client bundle in production because server bundle is only
|
|
124
|
+
// Only minimize client bundle in production because server bundle is only
|
|
125
|
+
// used for static site generation
|
|
141
126
|
minimize: minimizeEnabled,
|
|
142
127
|
minimizer: minimizeEnabled
|
|
143
|
-
? utils_1.getMinimizer(useSimpleCssMinifier)
|
|
128
|
+
? (0, utils_1.getMinimizer)(useSimpleCssMinifier)
|
|
144
129
|
: undefined,
|
|
145
130
|
splitChunks: isServer
|
|
146
131
|
? false
|
|
147
132
|
: {
|
|
148
|
-
// Since the chunk name includes all origin chunk names it's
|
|
133
|
+
// Since the chunk name includes all origin chunk names it's
|
|
134
|
+
// recommended for production builds with long term caching to NOT
|
|
135
|
+
// include [name] in the filenames
|
|
149
136
|
name: false,
|
|
150
137
|
cacheGroups: {
|
|
151
|
-
//
|
|
138
|
+
// Disable the built-in cacheGroups
|
|
152
139
|
default: false,
|
|
153
140
|
common: {
|
|
154
141
|
name: 'common',
|
|
@@ -177,19 +164,19 @@ function createBaseConfig(props, isServer, minify = true) {
|
|
|
177
164
|
fileLoaderUtils.rules.svg(),
|
|
178
165
|
fileLoaderUtils.rules.otherAssets(),
|
|
179
166
|
{
|
|
180
|
-
test: /\.
|
|
167
|
+
test: /\.[jt]sx?$/i,
|
|
181
168
|
exclude: excludeJS,
|
|
182
169
|
use: [
|
|
183
|
-
utils_1.getCustomizableJSLoader(
|
|
170
|
+
(0, utils_1.getCustomizableJSLoader)(siteConfig.webpack?.jsLoader)({
|
|
184
171
|
isServer,
|
|
185
|
-
babelOptions: utils_1.getCustomBabelConfigFilePath(siteDir),
|
|
172
|
+
babelOptions: await (0, utils_1.getCustomBabelConfigFilePath)(siteDir),
|
|
186
173
|
}),
|
|
187
174
|
],
|
|
188
175
|
},
|
|
189
176
|
{
|
|
190
177
|
test: CSS_REGEX,
|
|
191
178
|
exclude: CSS_MODULE_REGEX,
|
|
192
|
-
use: utils_1.getStyleLoaders(isServer, {
|
|
179
|
+
use: (0, utils_1.getStyleLoaders)(isServer, {
|
|
193
180
|
importLoaders: 1,
|
|
194
181
|
sourceMap: !isProd,
|
|
195
182
|
}),
|
|
@@ -198,7 +185,7 @@ function createBaseConfig(props, isServer, minify = true) {
|
|
|
198
185
|
// using the extension .module.css
|
|
199
186
|
{
|
|
200
187
|
test: CSS_MODULE_REGEX,
|
|
201
|
-
use: utils_1.getStyleLoaders(isServer, {
|
|
188
|
+
use: (0, utils_1.getStyleLoaders)(isServer, {
|
|
202
189
|
modules: {
|
|
203
190
|
localIdentName: isProd
|
|
204
191
|
? `[local]_[contenthash:base64:4]`
|
|
@@ -219,8 +206,9 @@ function createBaseConfig(props, isServer, minify = true) {
|
|
|
219
206
|
chunkFilename: isProd
|
|
220
207
|
? 'assets/css/[name].[contenthash:8].css'
|
|
221
208
|
: '[name].css',
|
|
222
|
-
//
|
|
223
|
-
//
|
|
209
|
+
// Remove css order warnings if css imports are not sorted
|
|
210
|
+
// alphabetically. See https://github.com/webpack-contrib/mini-css-extract-plugin/pull/422
|
|
211
|
+
// for more reasoning
|
|
224
212
|
ignoreOrder: true,
|
|
225
213
|
}),
|
|
226
214
|
],
|
package/lib/webpack/client.d.ts
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import { Configuration } from 'webpack';
|
|
8
|
-
import { Props } from '@docusaurus/types';
|
|
9
|
-
export default function createClientConfig(props: Props, minify?: boolean): Configuration
|
|
7
|
+
import type { Configuration } from 'webpack';
|
|
8
|
+
import type { Props } from '@docusaurus/types';
|
|
9
|
+
export default function createClientConfig(props: Props, minify?: boolean): Promise<Configuration>;
|
package/lib/webpack/client.js
CHANGED
|
@@ -7,28 +7,20 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
const tslib_1 = require("tslib");
|
|
10
|
-
const
|
|
10
|
+
const logger_1 = tslib_1.__importDefault(require("@docusaurus/logger"));
|
|
11
11
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
12
12
|
const webpack_merge_1 = tslib_1.__importDefault(require("webpack-merge"));
|
|
13
13
|
const base_1 = require("./base");
|
|
14
14
|
const ChunkAssetPlugin_1 = tslib_1.__importDefault(require("./plugins/ChunkAssetPlugin"));
|
|
15
15
|
const LogPlugin_1 = tslib_1.__importDefault(require("./plugins/LogPlugin"));
|
|
16
|
-
function createClientConfig(props, minify = true) {
|
|
17
|
-
var _a;
|
|
18
|
-
const isProd = process.env.NODE_ENV === 'production';
|
|
16
|
+
async function createClientConfig(props, minify = true) {
|
|
19
17
|
const isBuilding = process.argv[2] === 'build';
|
|
20
|
-
const config = base_1.createBaseConfig(props, false, minify);
|
|
21
|
-
const clientConfig = webpack_merge_1.default(config, {
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// note: the one in ./dev is modified to work with Docusaurus
|
|
27
|
-
// !isProd && require.resolve('react-dev-utils/hotDevServer.js'),
|
|
28
|
-
!isProd &&
|
|
29
|
-
require.resolve('./react-dev-utils-webpack5/webpackHotDevClient.js'),
|
|
30
|
-
path_1.default.resolve(__dirname, '../client/clientEntry.js'),
|
|
31
|
-
].filter(Boolean),
|
|
18
|
+
const config = await (0, base_1.createBaseConfig)(props, false, minify);
|
|
19
|
+
const clientConfig = (0, webpack_merge_1.default)(config, {
|
|
20
|
+
// Useless, disabled on purpose (errors on existing sites with no
|
|
21
|
+
// browserslist config)
|
|
22
|
+
// target: 'browserslist',
|
|
23
|
+
entry: path_1.default.resolve(__dirname, '../client/clientEntry.js'),
|
|
32
24
|
optimization: {
|
|
33
25
|
// Keep the runtime chunk separated to enable long term caching
|
|
34
26
|
// https://twitter.com/wSokra/status/969679223278505985
|
|
@@ -42,13 +34,14 @@ function createClientConfig(props, minify = true) {
|
|
|
42
34
|
}),
|
|
43
35
|
],
|
|
44
36
|
});
|
|
45
|
-
// When building include the plugin to force terminate building if errors
|
|
37
|
+
// When building, include the plugin to force terminate building if errors
|
|
38
|
+
// happened in the client bundle.
|
|
46
39
|
if (isBuilding) {
|
|
47
|
-
|
|
40
|
+
clientConfig.plugins?.push({
|
|
48
41
|
apply: (compiler) => {
|
|
49
42
|
compiler.hooks.done.tap('client:done', (stats) => {
|
|
50
43
|
if (stats.hasErrors()) {
|
|
51
|
-
|
|
44
|
+
logger_1.default.error('Client bundle compiled with errors therefore further build is impossible.');
|
|
52
45
|
process.exit(1);
|
|
53
46
|
}
|
|
54
47
|
});
|
|
@@ -4,8 +4,18 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import { Compiler } from 'webpack';
|
|
8
|
-
|
|
7
|
+
import { type Compiler } from 'webpack';
|
|
8
|
+
/**
|
|
9
|
+
* We modify webpack runtime to add an extra function called
|
|
10
|
+
* "__webpack_require__.gca" that will allow us to get the corresponding chunk
|
|
11
|
+
* asset for a webpack chunk. Pass it the chunkName or chunkId you want to load.
|
|
12
|
+
* For example: if you have a chunk named "my-chunk-name" that will map to
|
|
13
|
+
* "/publicPath/0a84b5e7.c8e35c7a.js" as its corresponding output path
|
|
14
|
+
* __webpack_require__.gca("my-chunk-name") will return
|
|
15
|
+
* "/publicPath/0a84b5e7.c8e35c7a.js"
|
|
16
|
+
*
|
|
17
|
+
* "gca" stands for "get chunk asset"
|
|
18
|
+
*/
|
|
19
|
+
export default class ChunkAssetPlugin {
|
|
9
20
|
apply(compiler: Compiler): void;
|
|
10
21
|
}
|
|
11
|
-
export default ChunkAssetPlugin;
|
|
@@ -6,37 +6,44 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
10
|
+
const webpack_1 = tslib_1.__importDefault(require("webpack"));
|
|
10
11
|
const pluginName = 'chunk-asset-plugin';
|
|
12
|
+
/**
|
|
13
|
+
* We modify webpack runtime to add an extra function called
|
|
14
|
+
* "__webpack_require__.gca" that will allow us to get the corresponding chunk
|
|
15
|
+
* asset for a webpack chunk. Pass it the chunkName or chunkId you want to load.
|
|
16
|
+
* For example: if you have a chunk named "my-chunk-name" that will map to
|
|
17
|
+
* "/publicPath/0a84b5e7.c8e35c7a.js" as its corresponding output path
|
|
18
|
+
* __webpack_require__.gca("my-chunk-name") will return
|
|
19
|
+
* "/publicPath/0a84b5e7.c8e35c7a.js"
|
|
20
|
+
*
|
|
21
|
+
* "gca" stands for "get chunk asset"
|
|
22
|
+
*/
|
|
11
23
|
class ChunkAssetPlugin {
|
|
12
24
|
apply(compiler) {
|
|
13
25
|
compiler.hooks.thisCompilation.tap(pluginName, ({ mainTemplate }) => {
|
|
14
|
-
/* We modify webpack runtime to add an extra function called "__webpack_require__.gca"
|
|
15
|
-
that will allow us to get the corresponding chunk asset for a webpack chunk.
|
|
16
|
-
Pass it the chunkName or chunkId you want to load.
|
|
17
|
-
For example: if you have a chunk named "my-chunk-name" that will map to "/publicPath/0a84b5e7.c8e35c7a.js" as its corresponding output path
|
|
18
|
-
__webpack_require__.gca("my-chunk-name") will return "/publicPath/0a84b5e7.c8e35c7a.js"
|
|
19
|
-
"gca" stands for "get chunk asset"
|
|
20
|
-
*/
|
|
21
26
|
mainTemplate.hooks.requireExtensions.tap(pluginName, (source, chunk) => {
|
|
22
27
|
const chunkIdToName = chunk.getChunkMaps(false).name;
|
|
23
|
-
const chunkNameToId = Object.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
});
|
|
28
|
+
const chunkNameToId = Object.fromEntries(Object.entries(chunkIdToName).map(([chunkId, chunkName]) => [
|
|
29
|
+
chunkName,
|
|
30
|
+
chunkId,
|
|
31
|
+
]));
|
|
28
32
|
const buf = [source];
|
|
29
33
|
buf.push('// function to get chunk asset');
|
|
30
34
|
buf.push(
|
|
31
35
|
// If chunkName is passed, we convert it to chunk asset url
|
|
32
36
|
// .p => public path url ("/" or "/baseUrl/")
|
|
33
|
-
// .u(chunkId) =>
|
|
34
|
-
//
|
|
37
|
+
// .u(chunkId) =>
|
|
38
|
+
// chunk asset url ("assets/js/x63b64xd.contentHash.js")
|
|
39
|
+
// not sure where this is documented, but this link was helpful:
|
|
40
|
+
// https://programmer.help/blogs/5d68849083e1a.html
|
|
35
41
|
//
|
|
36
|
-
// Note: __webpack_require__.gca() is called in docusaurus.ts for
|
|
42
|
+
// Note: __webpack_require__.gca() is called in docusaurus.ts for
|
|
43
|
+
// prefetching
|
|
37
44
|
// Note: we previously used jsonpScriptSrc (Webpack 4)
|
|
38
45
|
`__webpack_require__.gca = function(chunkId) { chunkId = ${JSON.stringify(chunkNameToId)}[chunkId]||chunkId; return __webpack_require__.p + __webpack_require__.u(chunkId); };`);
|
|
39
|
-
return webpack_1.Template.asString(buf);
|
|
46
|
+
return webpack_1.default.Template.asString(buf);
|
|
40
47
|
});
|
|
41
48
|
});
|
|
42
49
|
}
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
14
|
* copies of the Software, and to permit persons to whom the Software is
|
|
15
15
|
* furnished to do so, subject to the following conditions:
|
|
16
|
-
* The above copyright notice and this permission notice shall be included in
|
|
17
|
-
* copies or substantial portions of the Software.
|
|
16
|
+
* The above copyright notice and this permission notice shall be included in
|
|
17
|
+
* all copies or substantial portions of the Software.
|
|
18
18
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
19
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
20
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
24
|
* SOFTWARE.
|
|
25
25
|
*/
|
|
26
|
-
import { Compiler, Stats } from 'webpack';
|
|
27
|
-
export
|
|
26
|
+
import type { Compiler, Stats } from 'webpack';
|
|
27
|
+
export declare type Options = {
|
|
28
28
|
/**
|
|
29
29
|
* Write Logs to Console
|
|
30
30
|
* (Always enabled when dry is true)
|
|
@@ -53,8 +53,8 @@ export interface Options {
|
|
|
53
53
|
* default: ['**\/*']
|
|
54
54
|
*/
|
|
55
55
|
cleanOnceBeforeBuildPatterns?: string[];
|
|
56
|
-
}
|
|
57
|
-
|
|
56
|
+
};
|
|
57
|
+
export default class CleanWebpackPlugin {
|
|
58
58
|
private readonly verbose;
|
|
59
59
|
private readonly cleanStaleWebpackAssets;
|
|
60
60
|
private readonly protectWebpackAssets;
|
|
@@ -69,10 +69,10 @@ declare class CleanWebpackPlugin {
|
|
|
69
69
|
*
|
|
70
70
|
* Only happens once.
|
|
71
71
|
*
|
|
72
|
-
* Warning: It is recommended to initially clean your build directory outside
|
|
72
|
+
* Warning: It is recommended to initially clean your build directory outside
|
|
73
|
+
* of webpack to minimize unexpected behavior.
|
|
73
74
|
*/
|
|
74
75
|
handleInitial(): void;
|
|
75
76
|
handleDone(stats: Stats): void;
|
|
76
77
|
removeFiles(patterns: string[]): void;
|
|
77
78
|
}
|
|
78
|
-
export default CleanWebpackPlugin;
|
|
@@ -41,7 +41,6 @@ class CleanWebpackPlugin {
|
|
|
41
41
|
}
|
|
42
42
|
apply(compiler) {
|
|
43
43
|
if (!compiler.options.output || !compiler.options.output.path) {
|
|
44
|
-
// eslint-disable-next-line no-console
|
|
45
44
|
console.warn('clean-webpack-plugin: options.output.path not defined. Plugin disabled...');
|
|
46
45
|
return;
|
|
47
46
|
}
|
|
@@ -61,7 +60,8 @@ class CleanWebpackPlugin {
|
|
|
61
60
|
*
|
|
62
61
|
* Only happens once.
|
|
63
62
|
*
|
|
64
|
-
* Warning: It is recommended to initially clean your build directory outside
|
|
63
|
+
* Warning: It is recommended to initially clean your build directory outside
|
|
64
|
+
* of webpack to minimize unexpected behavior.
|
|
65
65
|
*/
|
|
66
66
|
handleInitial() {
|
|
67
67
|
if (this.initialClean) {
|
|
@@ -76,7 +76,6 @@ class CleanWebpackPlugin {
|
|
|
76
76
|
*/
|
|
77
77
|
if (stats.hasErrors()) {
|
|
78
78
|
if (this.verbose) {
|
|
79
|
-
// eslint-disable-next-line no-console
|
|
80
79
|
console.warn('clean-webpack-plugin: pausing due to webpack errors');
|
|
81
80
|
}
|
|
82
81
|
return;
|
|
@@ -87,18 +86,14 @@ class CleanWebpackPlugin {
|
|
|
87
86
|
const statsAssets = stats.toJson({
|
|
88
87
|
all: false,
|
|
89
88
|
assets: true,
|
|
90
|
-
}).assets
|
|
91
|
-
const assets = statsAssets.map((asset) =>
|
|
92
|
-
return asset.name;
|
|
93
|
-
});
|
|
89
|
+
}).assets ?? [];
|
|
90
|
+
const assets = statsAssets.map((asset) => asset.name);
|
|
94
91
|
/**
|
|
95
92
|
* Get all files that were in the previous build but not the current
|
|
96
93
|
*
|
|
97
94
|
* (relies on del's cwd: outputPath option)
|
|
98
95
|
*/
|
|
99
|
-
const staleFiles = this.currentAssets.filter((previousAsset) =>
|
|
100
|
-
return assets.includes(previousAsset) === false;
|
|
101
|
-
});
|
|
96
|
+
const staleFiles = this.currentAssets.filter((previousAsset) => assets.includes(previousAsset) === false);
|
|
102
97
|
/**
|
|
103
98
|
* Save assets for next compilation
|
|
104
99
|
*/
|
|
@@ -116,7 +111,7 @@ class CleanWebpackPlugin {
|
|
|
116
111
|
}
|
|
117
112
|
removeFiles(patterns) {
|
|
118
113
|
try {
|
|
119
|
-
const deleted = del_1.sync(patterns, {
|
|
114
|
+
const deleted = (0, del_1.sync)(patterns, {
|
|
120
115
|
force: false,
|
|
121
116
|
// Change context to build directory
|
|
122
117
|
cwd: this.outputPath,
|
|
@@ -135,18 +130,17 @@ class CleanWebpackPlugin {
|
|
|
135
130
|
* https://github.com/webpack/webpack/issues/1904
|
|
136
131
|
* https://github.com/johnagan/clean-webpack-plugin/issues/11
|
|
137
132
|
*/
|
|
138
|
-
// eslint-disable-next-line no-console
|
|
139
133
|
console.warn(`clean-webpack-plugin: removed ${filename}`);
|
|
140
134
|
});
|
|
141
135
|
}
|
|
142
136
|
}
|
|
143
|
-
catch (
|
|
144
|
-
const needsForce = /Cannot delete files\/folders outside the current working directory\./.test(
|
|
137
|
+
catch (err) {
|
|
138
|
+
const needsForce = /Cannot delete files\/folders outside the current working directory\./.test(err.message);
|
|
145
139
|
if (needsForce) {
|
|
146
140
|
const message = 'clean-webpack-plugin: Cannot delete files/folders outside the current working directory. Can be overridden with the "dangerouslyAllowCleanPatternsOutsideProject" option.';
|
|
147
141
|
throw new Error(message);
|
|
148
142
|
}
|
|
149
|
-
throw
|
|
143
|
+
throw err;
|
|
150
144
|
}
|
|
151
145
|
}
|
|
152
146
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import WebpackBar from 'webpackbar';
|
|
8
|
-
import { Compiler } from 'webpack';
|
|
8
|
+
import type { Compiler } from 'webpack';
|
|
9
9
|
export default class LogPlugin extends WebpackBar {
|
|
10
10
|
apply(compiler: Compiler): void;
|
|
11
11
|
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
2
|
/**
|
|
5
3
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
4
|
*
|
|
7
5
|
* This source code is licensed under the MIT license found in the
|
|
8
6
|
* LICENSE file in the root directory of this source tree.
|
|
9
7
|
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
10
10
|
const webpackbar_1 = tslib_1.__importDefault(require("webpackbar"));
|
|
11
|
-
|
|
12
|
-
const formatWebpackMessages_1 = tslib_1.__importDefault(require("../react-dev-utils-webpack5/formatWebpackMessages"));
|
|
11
|
+
const formatWebpackMessages_1 = tslib_1.__importDefault(require("react-dev-utils/formatWebpackMessages"));
|
|
13
12
|
function showError(arr) {
|
|
14
13
|
console.log(`\n\n${arr.join('\n')}`);
|
|
15
14
|
}
|
|
@@ -23,7 +22,7 @@ class LogPlugin extends webpackbar_1.default {
|
|
|
23
22
|
// TODO do we really want to keep this legacy logic?
|
|
24
23
|
// let's wait and see how the react-dev-utils support Webpack5
|
|
25
24
|
// we probably want to print the error stacktraces here
|
|
26
|
-
const messages = formatWebpackMessages_1.default(errorsWarnings);
|
|
25
|
+
const messages = (0, formatWebpackMessages_1.default)(errorsWarnings);
|
|
27
26
|
if (messages.errors.length) {
|
|
28
27
|
showError(messages.errors);
|
|
29
28
|
}
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import { Compiler } from 'webpack';
|
|
8
|
-
|
|
7
|
+
import type { Compiler } from 'webpack';
|
|
8
|
+
declare type WaitPluginOptions = {
|
|
9
9
|
filepath: string;
|
|
10
|
-
}
|
|
10
|
+
};
|
|
11
11
|
export default class WaitPlugin {
|
|
12
12
|
filepath: string;
|
|
13
13
|
constructor(options: WaitPluginOptions);
|
|
@@ -20,7 +20,7 @@ class WaitPlugin {
|
|
|
20
20
|
// To prevent 'waitFile' error on waiting non-existing directory
|
|
21
21
|
fs_extra_1.default.ensureDir(path_1.default.dirname(this.filepath), {}, () => {
|
|
22
22
|
// Wait until file exist
|
|
23
|
-
wait_on_1.default({
|
|
23
|
+
(0, wait_on_1.default)({
|
|
24
24
|
resources: [this.filepath],
|
|
25
25
|
interval: 300,
|
|
26
26
|
})
|
package/lib/webpack/server.d.ts
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import { Configuration } from 'webpack';
|
|
8
|
-
import { Props } from '@docusaurus/types';
|
|
9
|
-
|
|
7
|
+
import type { Configuration } from 'webpack';
|
|
8
|
+
import type { Props } from '@docusaurus/types';
|
|
9
|
+
import { type Locals } from '@slorber/static-site-generator-webpack-plugin';
|
|
10
|
+
export default function createServerConfig({ props, onLinksCollected, onHeadTagsCollected, }: Pick<Locals, 'onLinksCollected' | 'onHeadTagsCollected'> & {
|
|
10
11
|
props: Props;
|
|
11
|
-
|
|
12
|
-
}): Configuration;
|
|
12
|
+
}): Promise<Configuration>;
|
package/lib/webpack/server.js
CHANGED
|
@@ -12,12 +12,13 @@ const webpack_merge_1 = tslib_1.__importDefault(require("webpack-merge"));
|
|
|
12
12
|
const base_1 = require("./base");
|
|
13
13
|
const WaitPlugin_1 = tslib_1.__importDefault(require("./plugins/WaitPlugin"));
|
|
14
14
|
const LogPlugin_1 = tslib_1.__importDefault(require("./plugins/LogPlugin"));
|
|
15
|
-
const
|
|
15
|
+
const utils_1 = require("@docusaurus/utils");
|
|
16
|
+
const ssr_html_template_1 = tslib_1.__importDefault(require("./templates/ssr.html.template"));
|
|
16
17
|
// Forked for Docusaurus: https://github.com/slorber/static-site-generator-webpack-plugin
|
|
17
18
|
const static_site_generator_webpack_plugin_1 = tslib_1.__importDefault(require("@slorber/static-site-generator-webpack-plugin"));
|
|
18
|
-
function createServerConfig({ props, onLinksCollected
|
|
19
|
-
const { baseUrl, routesPaths, generatedFilesDir, headTags, preBodyTags, postBodyTags,
|
|
20
|
-
const config = base_1.createBaseConfig(props, true);
|
|
19
|
+
async function createServerConfig({ props, onLinksCollected, onHeadTagsCollected, }) {
|
|
20
|
+
const { baseUrl, routesPaths, generatedFilesDir, headTags, preBodyTags, postBodyTags, siteConfig: { noIndex, trailingSlash, ssrTemplate }, } = props;
|
|
21
|
+
const config = await (0, base_1.createBaseConfig)(props, true);
|
|
21
22
|
const routesLocation = {};
|
|
22
23
|
// Array of paths to be rendered. Relative to output directory
|
|
23
24
|
const ssgPaths = routesPaths.map((str) => {
|
|
@@ -25,8 +26,8 @@ function createServerConfig({ props, onLinksCollected = () => { }, }) {
|
|
|
25
26
|
routesLocation[ssgPath] = str;
|
|
26
27
|
return ssgPath;
|
|
27
28
|
});
|
|
28
|
-
const serverConfig = webpack_merge_1.default(config, {
|
|
29
|
-
target: `node${
|
|
29
|
+
const serverConfig = (0, webpack_merge_1.default)(config, {
|
|
30
|
+
target: `node${utils_1.NODE_MAJOR_VERSION}.${utils_1.NODE_MINOR_VERSION}`,
|
|
30
31
|
entry: {
|
|
31
32
|
main: path_1.default.resolve(__dirname, '../client/serverEntry.js'),
|
|
32
33
|
},
|
|
@@ -52,11 +53,18 @@ function createServerConfig({ props, onLinksCollected = () => { }, }) {
|
|
|
52
53
|
preBodyTags,
|
|
53
54
|
postBodyTags,
|
|
54
55
|
onLinksCollected,
|
|
55
|
-
|
|
56
|
+
onHeadTagsCollected,
|
|
57
|
+
ssrTemplate: ssrTemplate ?? ssr_html_template_1.default,
|
|
56
58
|
noIndex,
|
|
59
|
+
DOCUSAURUS_VERSION: utils_1.DOCUSAURUS_VERSION,
|
|
57
60
|
},
|
|
58
61
|
paths: ssgPaths,
|
|
59
62
|
preferFoldersOutput: trailingSlash,
|
|
63
|
+
// When using "new URL('file.js', import.meta.url)", Webpack will emit
|
|
64
|
+
// __filename, and this plugin will throw. not sure the __filename value
|
|
65
|
+
// has any importance for this plugin, just using an empty string to
|
|
66
|
+
// avoid the error. See https://github.com/facebook/docusaurus/issues/4922
|
|
67
|
+
globals: { __filename: '' },
|
|
60
68
|
}),
|
|
61
69
|
// Show compilation progress bar.
|
|
62
70
|
new LogPlugin_1.default({
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
declare const _default: "\n<!DOCTYPE html>\n<html <%~ it.htmlAttributes %>>\n <head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta name=\"generator\" content=\"Docusaurus v<%= it.version %>\">\n <% if (it.noIndex) { %>\n <meta name=\"robots\" content=\"noindex, nofollow\" />\n <% } %>\n <%~ it.headTags %>\n <% it.metaAttributes.forEach((metaAttribute) => { %>\n <%~ metaAttribute %>\n <% }); %>\n <% it.stylesheets.forEach((stylesheet) => { %>\n <link rel=\"stylesheet\" href=\"<%= it.baseUrl %><%= stylesheet %>\" />\n <% }); %>\n <% it.scripts.forEach((script) => { %>\n <link rel=\"preload\" href=\"<%= it.baseUrl %><%= script %>\" as=\"script\">\n <% }); %>\n </head>\n <body <%~ it.bodyAttributes %>>\n <%~ it.preBodyTags %>\n <div id=\"__docusaurus\">\n <%~ it.appHtml %>\n </div>\n <% it.scripts.forEach((script) => { %>\n <script src=\"<%= it.baseUrl %><%= script %>\"></script>\n <% }); %>\n <%~ it.postBodyTags %>\n </body>\n</html>\n";
|
|
8
|
+
export default _default;
|