From 06cc8fb7a164cd803ceaaed42ae3d587044c079d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Heitz?= Date: Mon, 28 Sep 2020 14:48:42 +0200 Subject: [PATCH] feat(v2): Add @theme-init components to user theme (#3485) * Add @theme-init components to user theme * Refactor loadThemeAlias duplicate code to function --- .../docusaurus/src/server/themes/index.ts | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/packages/docusaurus/src/server/themes/index.ts b/packages/docusaurus/src/server/themes/index.ts index e67e1dd415..574a65ab4d 100644 --- a/packages/docusaurus/src/server/themes/index.ts +++ b/packages/docusaurus/src/server/themes/index.ts @@ -8,29 +8,36 @@ import {ThemeAlias} from '@docusaurus/types'; import themeAlias from './alias'; +function buildThemeAliases( + themeAliases: ThemeAlias, + aliases: ThemeAlias = {}, +): ThemeAlias { + Object.keys(themeAliases).forEach((aliasKey) => { + if (aliasKey in aliases) { + const componentName = aliasKey.substring(aliasKey.indexOf('/') + 1); + // eslint-disable-next-line no-param-reassign + aliases[`@theme-init/${componentName}`] = aliases[aliasKey]; + } + // eslint-disable-next-line no-param-reassign + aliases[aliasKey] = themeAliases[aliasKey]; + }); + return aliases; +} + export default function loadThemeAlias( themePaths: string[], userThemePaths: string[] = [], ): ThemeAlias { - const aliases = {}; + let aliases = {}; themePaths.forEach((themePath) => { const themeAliases = themeAlias(themePath); - Object.keys(themeAliases).forEach((aliasKey) => { - if (aliasKey in aliases) { - const componentName = aliasKey.substring(aliasKey.indexOf('/') + 1); - aliases[`@theme-init/${componentName}`] = aliases[aliasKey]; - } - - aliases[aliasKey] = themeAliases[aliasKey]; - }); + aliases = {...aliases, ...buildThemeAliases(themeAliases, aliases)}; }); userThemePaths.forEach((themePath) => { const userThemeAliases = themeAlias(themePath, false); - Object.keys(userThemeAliases).forEach((aliasKey) => { - aliases[aliasKey] = userThemeAliases[aliasKey]; - }); + aliases = {...aliases, ...buildThemeAliases(userThemeAliases, aliases)}; }); return aliases;