@docusaurus/core 3.9.2-canary-6436 → 3.9.2-canary-6439
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/lib/commands/build/build.js +9 -16
- package/lib/commands/build/buildLocale.js +4 -0
- package/lib/server/configValidation.d.ts +1 -1
- package/lib/server/configValidation.js +42 -0
- package/lib/server/i18n.d.ts +5 -1
- package/lib/server/i18n.js +17 -9
- package/lib/server/site.js +8 -0
- package/package.json +12 -12
|
@@ -11,10 +11,9 @@ const tslib_1 = require("tslib");
|
|
|
11
11
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
12
12
|
const logger_1 = tslib_1.__importStar(require("@docusaurus/logger"));
|
|
13
13
|
const utils_1 = require("@docusaurus/utils");
|
|
14
|
-
const site_1 = require("../../server/site");
|
|
15
14
|
const i18n_1 = require("../../server/i18n");
|
|
16
15
|
const buildLocale_1 = require("./buildLocale");
|
|
17
|
-
const
|
|
16
|
+
const config_1 = require("../../server/config");
|
|
18
17
|
async function build(siteDirParam = '.', cliOptions = {}) {
|
|
19
18
|
process.env.BABEL_ENV = 'production';
|
|
20
19
|
process.env.NODE_ENV = 'production';
|
|
@@ -50,24 +49,18 @@ function orderLocales({ locales, defaultLocale, }) {
|
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
async function getLocalesToBuild({ siteDir, cliOptions, }) {
|
|
53
|
-
|
|
54
|
-
// only loading siteConfig should be enough
|
|
55
|
-
const context = await (0, site_1.loadContext)({
|
|
52
|
+
const { siteConfig } = await (0, config_1.loadSiteConfig)({
|
|
56
53
|
siteDir,
|
|
57
|
-
|
|
58
|
-
config: cliOptions.config,
|
|
59
|
-
automaticBaseUrlLocalizationDisabled: (0, buildUtils_1.isAutomaticBaseUrlLocalizationDisabled)(cliOptions),
|
|
54
|
+
customConfigFilePath: cliOptions.config,
|
|
60
55
|
});
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
});
|
|
67
|
-
const locales = cliOptions.locale ?? i18n.locales;
|
|
56
|
+
const locales = cliOptions.locale ??
|
|
57
|
+
(0, i18n_1.getLocaleList)({
|
|
58
|
+
i18nConfig: siteConfig.i18n,
|
|
59
|
+
currentLocale: siteConfig.i18n.defaultLocale, // Awkward but ok
|
|
60
|
+
});
|
|
68
61
|
return orderLocales({
|
|
69
62
|
locales: locales,
|
|
70
|
-
defaultLocale: i18n.defaultLocale,
|
|
63
|
+
defaultLocale: siteConfig.i18n.defaultLocale,
|
|
71
64
|
});
|
|
72
65
|
}
|
|
73
66
|
async function tryToBuildLocale(params) {
|
|
@@ -22,6 +22,7 @@ const ssgExecutor_1 = require("../../ssg/ssgExecutor");
|
|
|
22
22
|
const clearPath_1 = tslib_1.__importDefault(require("../utils/clearPath"));
|
|
23
23
|
const buildUtils_1 = require("./buildUtils");
|
|
24
24
|
const SkipBundling = process.env.DOCUSAURUS_SKIP_BUNDLING === 'true';
|
|
25
|
+
const ReturnAfterLoading = process.env.DOCUSAURUS_RETURN_AFTER_LOADING === 'true';
|
|
25
26
|
const ExitAfterLoading = process.env.DOCUSAURUS_EXIT_AFTER_LOADING === 'true';
|
|
26
27
|
const ExitAfterBundling = process.env.DOCUSAURUS_EXIT_AFTER_BUNDLING === 'true';
|
|
27
28
|
async function buildLocale({ siteDir, locale, cliOptions, }) {
|
|
@@ -37,6 +38,9 @@ async function buildLocale({ siteDir, locale, cliOptions, }) {
|
|
|
37
38
|
locale,
|
|
38
39
|
automaticBaseUrlLocalizationDisabled: (0, buildUtils_1.isAutomaticBaseUrlLocalizationDisabled)(cliOptions),
|
|
39
40
|
}));
|
|
41
|
+
if (ReturnAfterLoading) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
40
44
|
if (ExitAfterLoading) {
|
|
41
45
|
return process.exit(0);
|
|
42
46
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import { Joi } from '@docusaurus/utils-validation';
|
|
8
|
-
import type { FasterConfig, FutureConfig, FutureV4Config,
|
|
8
|
+
import type { DocusaurusConfig, FasterConfig, FutureConfig, FutureV4Config, I18nConfig, MarkdownConfig, MarkdownHooks, StorageConfig } from '@docusaurus/types';
|
|
9
9
|
export declare const DEFAULT_I18N_CONFIG: I18nConfig;
|
|
10
10
|
export declare const DEFAULT_STORAGE_CONFIG: StorageConfig;
|
|
11
11
|
export declare const DEFAULT_FASTER_CONFIG: FasterConfig;
|
|
@@ -55,6 +55,7 @@ exports.DEFAULT_FASTER_CONFIG = {
|
|
|
55
55
|
rspackBundler: false,
|
|
56
56
|
rspackPersistentCache: false,
|
|
57
57
|
ssgWorkerThreads: false,
|
|
58
|
+
gitEagerVcs: false,
|
|
58
59
|
};
|
|
59
60
|
// When using the "faster: true" shortcut
|
|
60
61
|
exports.DEFAULT_FASTER_CONFIG_TRUE = {
|
|
@@ -66,6 +67,7 @@ exports.DEFAULT_FASTER_CONFIG_TRUE = {
|
|
|
66
67
|
rspackBundler: true,
|
|
67
68
|
rspackPersistentCache: true,
|
|
68
69
|
ssgWorkerThreads: true,
|
|
70
|
+
gitEagerVcs: true,
|
|
69
71
|
};
|
|
70
72
|
exports.DEFAULT_FUTURE_V4_CONFIG = {
|
|
71
73
|
removeLegacyPostBuildHeadAttribute: false,
|
|
@@ -80,6 +82,7 @@ exports.DEFAULT_FUTURE_CONFIG = {
|
|
|
80
82
|
v4: exports.DEFAULT_FUTURE_V4_CONFIG,
|
|
81
83
|
experimental_faster: exports.DEFAULT_FASTER_CONFIG,
|
|
82
84
|
experimental_storage: exports.DEFAULT_STORAGE_CONFIG,
|
|
85
|
+
experimental_vcs: (0, utils_1.getVcsPreset)('default-v1'),
|
|
83
86
|
experimental_router: 'browser',
|
|
84
87
|
};
|
|
85
88
|
exports.DEFAULT_MARKDOWN_HOOKS = {
|
|
@@ -204,6 +207,7 @@ const FASTER_CONFIG_SCHEMA = utils_validation_1.Joi.alternatives()
|
|
|
204
207
|
rspackBundler: utils_validation_1.Joi.boolean().default(exports.DEFAULT_FASTER_CONFIG.rspackBundler),
|
|
205
208
|
rspackPersistentCache: utils_validation_1.Joi.boolean().default(exports.DEFAULT_FASTER_CONFIG.rspackPersistentCache),
|
|
206
209
|
ssgWorkerThreads: utils_validation_1.Joi.boolean().default(exports.DEFAULT_FASTER_CONFIG.ssgWorkerThreads),
|
|
210
|
+
gitEagerVcs: utils_validation_1.Joi.boolean().default(exports.DEFAULT_FASTER_CONFIG.gitEagerVcs),
|
|
207
211
|
}), utils_validation_1.Joi.boolean()
|
|
208
212
|
.required()
|
|
209
213
|
.custom((bool) => bool ? exports.DEFAULT_FASTER_CONFIG_TRUE : exports.DEFAULT_FASTER_CONFIG))
|
|
@@ -228,10 +232,39 @@ const STORAGE_CONFIG_SCHEMA = utils_validation_1.Joi.object({
|
|
|
228
232
|
})
|
|
229
233
|
.optional()
|
|
230
234
|
.default(exports.DEFAULT_STORAGE_CONFIG);
|
|
235
|
+
const VCS_CONFIG_OBJECT_SCHEMA = utils_validation_1.Joi.object({
|
|
236
|
+
// All the fields are required on purpose
|
|
237
|
+
// You either provide a full VCS config or nothing
|
|
238
|
+
initialize: utils_validation_1.Joi.function().maxArity(1).required(),
|
|
239
|
+
getFileCreationInfo: utils_validation_1.Joi.function().arity(1).required(),
|
|
240
|
+
getFileLastUpdateInfo: utils_validation_1.Joi.function().arity(1).required(),
|
|
241
|
+
});
|
|
242
|
+
const VCS_CONFIG_SCHEMA = utils_validation_1.Joi.custom((input) => {
|
|
243
|
+
if (typeof input === 'string') {
|
|
244
|
+
const presetName = input;
|
|
245
|
+
if (!utils_1.VcsPresetNames.includes(presetName)) {
|
|
246
|
+
throw new Error(`VCS config preset name '${input}' is not valid.`);
|
|
247
|
+
}
|
|
248
|
+
return (0, utils_1.getVcsPreset)(presetName);
|
|
249
|
+
}
|
|
250
|
+
if (typeof input === 'boolean') {
|
|
251
|
+
// We return the boolean on purpose
|
|
252
|
+
// We'll normalize it to a real VcsConfig later
|
|
253
|
+
// This is annoying, but we have to read the future flag to switch to the
|
|
254
|
+
// new "default-v2" config (not easy to do it here)
|
|
255
|
+
return input;
|
|
256
|
+
}
|
|
257
|
+
const { error, value } = VCS_CONFIG_OBJECT_SCHEMA.validate(input);
|
|
258
|
+
if (error) {
|
|
259
|
+
throw error;
|
|
260
|
+
}
|
|
261
|
+
return value;
|
|
262
|
+
}).default(true);
|
|
231
263
|
const FUTURE_CONFIG_SCHEMA = utils_validation_1.Joi.object({
|
|
232
264
|
v4: FUTURE_V4_SCHEMA,
|
|
233
265
|
experimental_faster: FASTER_CONFIG_SCHEMA,
|
|
234
266
|
experimental_storage: STORAGE_CONFIG_SCHEMA,
|
|
267
|
+
experimental_vcs: VCS_CONFIG_SCHEMA,
|
|
235
268
|
experimental_router: utils_validation_1.Joi.string()
|
|
236
269
|
.equal('browser', 'hash')
|
|
237
270
|
.default(exports.DEFAULT_FUTURE_CONFIG.experimental_router),
|
|
@@ -364,6 +397,15 @@ Please migrate and move this option to code=${'siteConfig.markdown.hooks.onBroke
|
|
|
364
397
|
// We erase the former one to ensure we don't use it anywhere
|
|
365
398
|
config.onBrokenMarkdownLinks = undefined;
|
|
366
399
|
}
|
|
400
|
+
// We normalize the VCS config when using a boolean value
|
|
401
|
+
if (typeof config.future.experimental_vcs === 'boolean') {
|
|
402
|
+
const vcsConfig = config.future.experimental_vcs
|
|
403
|
+
? config.future.experimental_faster.gitEagerVcs
|
|
404
|
+
? (0, utils_1.getVcsPreset)('default-v2')
|
|
405
|
+
: (0, utils_1.getVcsPreset)('default-v1')
|
|
406
|
+
: (0, utils_1.getVcsPreset)('disabled');
|
|
407
|
+
config.future.experimental_vcs = vcsConfig;
|
|
408
|
+
}
|
|
367
409
|
if (config.future.experimental_faster.ssgWorkerThreads &&
|
|
368
410
|
!config.future.v4.removeLegacyPostBuildHeadAttribute) {
|
|
369
411
|
throw new Error(`Docusaurus config ${logger_1.default.code('future.experimental_faster.ssgWorkerThreads')} requires the future flag ${logger_1.default.code('future.v4.removeLegacyPostBuildHeadAttribute')} to be turned on.
|
package/lib/server/i18n.d.ts
CHANGED
|
@@ -4,8 +4,12 @@
|
|
|
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 type { I18n, DocusaurusConfig, I18nLocaleConfig } from '@docusaurus/types';
|
|
7
|
+
import type { I18n, DocusaurusConfig, I18nLocaleConfig, I18nConfig } from '@docusaurus/types';
|
|
8
8
|
export declare function getDefaultLocaleConfig(locale: string): Omit<I18nLocaleConfig, 'translate' | 'url' | 'baseUrl'>;
|
|
9
|
+
export declare function getLocaleList({ i18nConfig, currentLocale, }: {
|
|
10
|
+
i18nConfig: I18nConfig;
|
|
11
|
+
currentLocale: string;
|
|
12
|
+
}): [string, ...string[]];
|
|
9
13
|
export declare function loadI18n({ siteDir, config, currentLocale, automaticBaseUrlLocalizationDisabled, }: {
|
|
10
14
|
siteDir: string;
|
|
11
15
|
config: DocusaurusConfig;
|
package/lib/server/i18n.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.getDefaultLocaleConfig = getDefaultLocaleConfig;
|
|
10
|
+
exports.getLocaleList = getLocaleList;
|
|
10
11
|
exports.loadI18n = loadI18n;
|
|
11
12
|
const tslib_1 = require("tslib");
|
|
12
13
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
@@ -82,22 +83,29 @@ function getDefaultLocaleConfig(locale) {
|
|
|
82
83
|
};
|
|
83
84
|
}
|
|
84
85
|
catch (e) {
|
|
85
|
-
throw new Error(`Docusaurus couldn't
|
|
86
|
+
throw new Error(`Docusaurus couldn't infer a default locale config for ${logger_1.default.name(locale)}.
|
|
87
|
+
Make sure it is a valid BCP 47 locale name (e.g. en, fr, fr-FR, etc.) and/or provide a valid BCP 47 ${logger_1.default.code(`siteConfig.i18n.localeConfig['${locale}'].htmlLang`)} attribute.`, { cause: e });
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
|
-
|
|
89
|
-
const { i18n: i18nConfig } = config;
|
|
90
|
+
function getLocaleList({ i18nConfig, currentLocale, }) {
|
|
90
91
|
if (!i18nConfig.locales.includes(currentLocale)) {
|
|
91
|
-
logger_1.default.warn `The locale name=${currentLocale} was not found in your site configuration
|
|
92
|
-
|
|
92
|
+
logger_1.default.warn `The locale name=${currentLocale} was not found in your Docusaurus site configuration.
|
|
93
|
+
We recommend adding the name=${currentLocale} to your site i18n config, but we will still try to run your site.
|
|
94
|
+
Declared site config locales are: ${i18nConfig.locales}`;
|
|
95
|
+
return i18nConfig.locales.concat(currentLocale);
|
|
93
96
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
return i18nConfig.locales;
|
|
98
|
+
}
|
|
99
|
+
async function loadI18n({ siteDir, config, currentLocale, automaticBaseUrlLocalizationDisabled, }) {
|
|
100
|
+
const { i18n: i18nConfig } = config;
|
|
101
|
+
const locales = getLocaleList({
|
|
102
|
+
i18nConfig,
|
|
103
|
+
currentLocale,
|
|
104
|
+
});
|
|
97
105
|
async function getFullLocaleConfig(locale) {
|
|
98
106
|
const localeConfigInput = i18nConfig.localeConfigs[locale] ?? {};
|
|
99
107
|
const localeConfig = {
|
|
100
|
-
...getDefaultLocaleConfig(locale),
|
|
108
|
+
...getDefaultLocaleConfig(localeConfigInput.htmlLang ?? locale),
|
|
101
109
|
...localeConfigInput,
|
|
102
110
|
};
|
|
103
111
|
// By default, translations will be enabled if i18n/<locale> dir exists
|
package/lib/server/site.js
CHANGED
|
@@ -43,6 +43,14 @@ async function loadContext(params) {
|
|
|
43
43
|
customConfigFilePath,
|
|
44
44
|
}),
|
|
45
45
|
});
|
|
46
|
+
// Not sure where is the best place to put this VCS initialization call?
|
|
47
|
+
// The sooner is probably the better
|
|
48
|
+
// Note: we don't await the result on purpose!
|
|
49
|
+
// VCS initialization can be slow for large repos, and we don't want to block
|
|
50
|
+
// VCS integrations should be carefully designed to avoid blocking
|
|
51
|
+
logger_1.PerfLogger.async('VCS init', () => {
|
|
52
|
+
return initialSiteConfig.future.experimental_vcs.initialize({ siteDir });
|
|
53
|
+
});
|
|
46
54
|
const currentBundler = await (0, bundler_1.getCurrentBundler)({
|
|
47
55
|
siteConfig: initialSiteConfig,
|
|
48
56
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/core",
|
|
3
3
|
"description": "Easy to Maintain Open Source Documentation Websites",
|
|
4
|
-
"version": "3.9.2-canary-
|
|
4
|
+
"version": "3.9.2-canary-6439",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
"url": "https://github.com/facebook/docusaurus/issues"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@docusaurus/babel": "3.9.2-canary-
|
|
37
|
-
"@docusaurus/bundler": "3.9.2-canary-
|
|
38
|
-
"@docusaurus/logger": "3.9.2-canary-
|
|
39
|
-
"@docusaurus/mdx-loader": "3.9.2-canary-
|
|
40
|
-
"@docusaurus/utils": "3.9.2-canary-
|
|
41
|
-
"@docusaurus/utils-common": "3.9.2-canary-
|
|
42
|
-
"@docusaurus/utils-validation": "3.9.2-canary-
|
|
36
|
+
"@docusaurus/babel": "3.9.2-canary-6439",
|
|
37
|
+
"@docusaurus/bundler": "3.9.2-canary-6439",
|
|
38
|
+
"@docusaurus/logger": "3.9.2-canary-6439",
|
|
39
|
+
"@docusaurus/mdx-loader": "3.9.2-canary-6439",
|
|
40
|
+
"@docusaurus/utils": "3.9.2-canary-6439",
|
|
41
|
+
"@docusaurus/utils-common": "3.9.2-canary-6439",
|
|
42
|
+
"@docusaurus/utils-validation": "3.9.2-canary-6439",
|
|
43
43
|
"boxen": "^6.2.1",
|
|
44
44
|
"chalk": "^4.1.2",
|
|
45
45
|
"chokidar": "^3.5.3",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"escape-html": "^1.0.3",
|
|
52
52
|
"eta": "^2.2.0",
|
|
53
53
|
"eval": "^0.1.8",
|
|
54
|
-
"execa": "5.1.1",
|
|
54
|
+
"execa": "^5.1.1",
|
|
55
55
|
"fs-extra": "^11.1.1",
|
|
56
56
|
"html-tags": "^3.3.1",
|
|
57
57
|
"html-webpack-plugin": "^5.6.0",
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
"webpack-merge": "^6.0.1"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@docusaurus/module-type-aliases": "3.9.2-canary-
|
|
81
|
-
"@docusaurus/types": "3.9.2-canary-
|
|
80
|
+
"@docusaurus/module-type-aliases": "3.9.2-canary-6439",
|
|
81
|
+
"@docusaurus/types": "3.9.2-canary-6439",
|
|
82
82
|
"@total-typescript/shoehorn": "^0.1.2",
|
|
83
83
|
"@types/detect-port": "^1.3.3",
|
|
84
84
|
"@types/react-dom": "^18.2.7",
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"engines": {
|
|
99
99
|
"node": ">=20.0"
|
|
100
100
|
},
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "67795b9b8e2c6d94284ae736bb0d974a2cf2000b"
|
|
102
102
|
}
|