mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-16 01:32:37 +02:00
feat(core): support TypeScript + ESM configuration (#9317)
Co-authored-by: Joshua Chen <sidachen2003@gmail.com> Co-authored-by: sebastienlorber <lorber.sebastien@gmail.com>
This commit is contained in:
parent
336a44f3ea
commit
45f1a669b5
126 changed files with 2054 additions and 914 deletions
|
@ -17,7 +17,7 @@ import {
|
|||
readVersionsFile,
|
||||
} from './versions/files';
|
||||
import {validateVersionName} from './versions/validation';
|
||||
import {loadSidebarsFileUnsafe} from './sidebars';
|
||||
import {loadSidebarsFile} from './sidebars';
|
||||
import {CURRENT_VERSION_NAME} from './constants';
|
||||
import type {PluginOptions} from '@docusaurus/plugin-content-docs';
|
||||
import type {LoadContext} from '@docusaurus/types';
|
||||
|
@ -37,7 +37,7 @@ async function createVersionedSidebarFile({
|
|||
// Note: we don't need the sidebars file to be normalized: it's ok to let
|
||||
// plugin option changes to impact older, versioned sidebars
|
||||
// We don't validate here, assuming the user has already built the version
|
||||
const sidebars = await loadSidebarsFileUnsafe(sidebarPath);
|
||||
const sidebars = await loadSidebarsFile(sidebarPath);
|
||||
|
||||
// Do not create a useless versioned sidebars file if sidebars file is empty
|
||||
// or sidebars are disabled/false)
|
||||
|
|
|
@ -9,10 +9,9 @@ import fs from 'fs-extra';
|
|||
import path from 'path';
|
||||
import _ from 'lodash';
|
||||
import logger from '@docusaurus/logger';
|
||||
import {Globby} from '@docusaurus/utils';
|
||||
import {loadFreshModule, Globby} from '@docusaurus/utils';
|
||||
import Yaml from 'js-yaml';
|
||||
import combinePromises from 'combine-promises';
|
||||
import importFresh from 'import-fresh';
|
||||
import {validateSidebars, validateCategoryMetadataFile} from './validation';
|
||||
import {normalizeSidebars} from './normalization';
|
||||
import {processSidebars} from './processor';
|
||||
|
@ -68,7 +67,7 @@ async function readCategoriesMetadata(contentPath: string) {
|
|||
);
|
||||
}
|
||||
|
||||
export async function loadSidebarsFileUnsafe(
|
||||
async function loadSidebarsFileUnsafe(
|
||||
sidebarFilePath: string | false | undefined,
|
||||
): Promise<SidebarsConfig> {
|
||||
// false => no sidebars
|
||||
|
@ -89,7 +88,19 @@ export async function loadSidebarsFileUnsafe(
|
|||
}
|
||||
|
||||
// We don't want sidebars to be cached because of hot reloading.
|
||||
return importFresh(sidebarFilePath);
|
||||
const module = await loadFreshModule(sidebarFilePath);
|
||||
|
||||
// TODO unsafe, need to refactor and improve validation
|
||||
return module as SidebarsConfig;
|
||||
}
|
||||
|
||||
export async function loadSidebarsFile(
|
||||
sidebarFilePath: string | false | undefined,
|
||||
): Promise<SidebarsConfig> {
|
||||
const sidebars = await loadSidebarsFileUnsafe(sidebarFilePath);
|
||||
|
||||
// TODO unsafe, need to refactor and improve validation
|
||||
return sidebars as SidebarsConfig;
|
||||
}
|
||||
|
||||
export async function loadSidebars(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue