add docsify forwarder & redirects

This commit is contained in:
Jack Humbert 2023-04-19 12:59:34 -04:00
parent fff2249a7c
commit db9f5c6013
5 changed files with 312 additions and 144 deletions

View File

@ -1,3 +1,5 @@
import DocsifyForwarder from '@site/src/components/DocsifyForwarder';
# Quantum Mechanical Keyboard Firmware # Quantum Mechanical Keyboard Firmware
## What is QMK Firmware? ## What is QMK Firmware?
@ -43,3 +45,5 @@ There are a lot of ways you can contribute to the QMK Community. The easiest way
* [Translate our documentation into your language](translating.md) * [Translate our documentation into your language](translating.md)
* [Report a bug](https://github.com/qmk/qmk_firmware/issues/new/choose) * [Report a bug](https://github.com/qmk/qmk_firmware/issues/new/choose)
* [Open a Pull Request](contributing.md) * [Open a Pull Request](contributing.md)
<DocsifyForwarder />

View File

@ -1,44 +1,44 @@
// @ts-check // @ts-check
// Note: type annotations allow type checking and IDEs autocompletion // Note: type annotations allow type checking and IDEs autocompletion
const lightCodeTheme = require('prism-react-renderer/themes/github'); const lightCodeTheme = require("prism-react-renderer/themes/github");
const darkCodeTheme = require('prism-react-renderer/themes/dracula'); const darkCodeTheme = require("prism-react-renderer/themes/dracula");
/** @type {import('@docusaurus/types').Config} */ /** @type {import('@docusaurus/types').Config} */
const config = { const config = {
title: 'QMK Firmware', title: "QMK Firmware",
tagline: 'Potatoes are cool', tagline: "The full documentation of the open-source firmware",
favicon: 'img/favicon.ico', favicon: "img/favicon.ico",
// Set the production url of your site here // Set the production url of your site here
url: 'https://docs.qmk.fm', url: "https://docs.qmk.fm",
// Set the /<baseUrl>/ pathname under which your site is served // Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/' // For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: '/', baseUrl: "/",
// GitHub pages deployment config. // GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these. // If you aren't using GitHub pages, you don't need these.
organizationName: 'qmk', // Usually your GitHub org/user name. organizationName: "qmk", // Usually your GitHub org/user name.
projectName: 'qmk_firmware', // Usually your repo name. projectName: "qmk_firmware", // Usually your repo name.
onBrokenLinks: 'throw', onBrokenLinks: "throw",
onBrokenMarkdownLinks: 'warn', onBrokenMarkdownLinks: "warn",
// Even if you don't use internalization, you can use this field to set useful // Even if you don't use internalization, you can use this field to set useful
// metadata like html lang. For example, if your site is Chinese, you may want // metadata like html lang. For example, if your site is Chinese, you may want
// to replace "en" with "zh-Hans". // to replace "en" with "zh-Hans".
i18n: { i18n: {
defaultLocale: 'en', defaultLocale: "en",
locales: ['en'],//, 'ja', 'zh-cn'], locales: ["en"], //, 'ja', 'zh-cn'],
}, },
presets: [ presets: [
[ [
'classic', "classic",
/** @type {import('@docusaurus/preset-classic').Options} */ /** @type {import('@docusaurus/preset-classic').Options} */
({ ({
docs: { docs: {
sidebarPath: require.resolve('./sidebars.js'), sidebarPath: require.resolve("./sidebars.js"),
path: ".", path: ".",
routeBasePath: "/", routeBasePath: "/",
exclude: [ exclude: [
@ -51,77 +51,198 @@ const config = {
// "ChangeLog" // "ChangeLog"
], ],
editUrl: editUrl:
'https://github.com/qmk/qmk_firmware/edit/master/docs/', "https://github.com/qmk/qmk_firmware/edit/master/docs/",
}, },
blog: false, blog: false,
theme: { theme: {
customCss: require.resolve('./src/css/custom.css'), customCss: require.resolve("./src/css/custom.css"),
}, },
}), }),
], ],
], ],
plugins: [
[
"@docusaurus/plugin-client-redirects",
{
fromExtensions: ['md', 'html'],
redirects: [
// from index.html
{
from: '/adding_a_keyboard_to_qmk',
to: '/hardware_keyboard_guidelines',
},
{
from: '/build_environment_setup',
to: '/newbs_getting_started',
},
{
from: '/cli_dev_configuration',
to: '/cli_configuration',
},
{
from: '/dynamic_macros',
to: '/feature_dynamic_macros',
},
{
from: '/feature_common_shortcuts',
to: '/feature_advanced_keycodes',
},
{
from: '/glossary',
to: '/reference_glossary',
},
{
from: '/key_lock',
to: '/feature_key_lock',
},
{
from: '/make_instructions',
to: '/getting_started_make_guide',
},
{
from: '/space_cadet_shift',
to: '/feature_space_cadet_shift',
},
{
from: '/getting_started_getting_help',
to: '/support',
},
{
from: '/tap_dance',
to: '/feature_tap_dance',
},
{
from: '/unicode',
to: '/feature_unicode',
},
{
from: '/python_development',
to: '/cli_development',
},
{
from: '/getting_started_build_tools',
to: '/newbs_getting_started',
},
{
from: '/tutorial',
to: '/newbs',
},
// from redirects.json
// {
// from: "/adding_a_keyboard_to_qmk",
// to: "/hardware_keyboard_guidelines"
// },
// {
// from: "/build_environment_setup",
// to: "/getting_started_build_tools"
// },
// {
// from: "/dynamic_macros",
// to: "/feature_dynamic_macros"
// },
// {
// from: "/feature_common_shortcuts",
// to: "/feature_advanced_keycodes"
// },
// {
// from: "/glossary",
// to: "/reference_glossary"
// },
// {
// from: "/key_lock",
// to: "/feature_key_lock"
// },
// {
// from: "/make_instructions",
// to: "/getting_started_make_guide"
// },
// {
// from: "/porting_your_keyboard_to_qmk",
// to: "/hardware_avr"
// },
// {
// from: "/space_cadet_shift",
// to: "/feature_space_cadet_shift"
// },
// {
// from: "/tap_dance",
// to: "/feature_tap_dance"
// },
// {
// from: "/unicode",
// to: "/feature_unicode"
// },
// {
// from: "/python_development",
// to: "/cli_development"
// }
],
},
],
],
themeConfig: themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */ /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({ ({
image: 'img/qmk-social-card.jpg', image: "img/qmk-social-card.jpg",
navbar: { navbar: {
title: 'QMK Firmware Docs', title: "QMK Firmware Docs",
logo: { logo: {
alt: 'QMK Firmware', alt: "QMK Firmware",
src: 'img/qmk-new-light.svg', src: "img/qmk-new-light.svg",
srcDark: 'img/qmk-new-dark.svg', srcDark: "img/qmk-new-dark.svg",
width: 32, width: 32,
height: 32, height: 32,
}, },
items: [ items: [
// {
// type: 'localeDropdown',
// position: 'right',
// },
{ {
type: 'localeDropdown', href: "https://github.com/qmk/qmk_firmware",
position: 'right', label: "GitHub",
}, position: "right",
{
href: 'https://github.com/qmk/qmk_firmware',
label: 'GitHub',
position: 'right',
}, },
], ],
}, },
docs: { docs: {
sidebar: { sidebar: {
autoCollapseCategories: false autoCollapseCategories: false,
} },
}, },
footer: { footer: {
style: 'dark', style: "dark",
links: [ links: [
{ {
title: 'Docs', title: "Docs",
items: [ items: [
{ {
label: 'Docs', label: "Docs",
to: '/', to: "/",
}, },
], ],
}, },
{ {
title: 'Community', title: "Community",
items: [ items: [
{ {
label: 'Discord', label: "Discord",
href: 'https://discord.gg/Uq7gcHh', href: "https://discord.gg/Uq7gcHh",
}, },
{ {
label: 'Reddit', label: "Reddit",
href: 'https://reddit.com/r/olkb', href: "https://reddit.com/r/olkb",
}, },
], ],
}, },
{ {
title: 'More', title: "More",
items: [ items: [
{ {
label: 'GitHub', label: "GitHub",
href: 'https://github.com/qmk/qmk_firmware', href: "https://github.com/qmk/qmk_firmware",
}, },
], ],
}, },

24
docs/package-lock.json generated
View File

@ -9,6 +9,7 @@
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@docusaurus/core": "2.4.0", "@docusaurus/core": "2.4.0",
"@docusaurus/plugin-client-redirects": "^2.4.0",
"@docusaurus/preset-classic": "2.4.0", "@docusaurus/preset-classic": "2.4.0",
"@mdx-js/react": "^1.6.22", "@mdx-js/react": "^1.6.22",
"clsx": "^1.2.1", "clsx": "^1.2.1",
@ -2185,6 +2186,29 @@
"react-dom": "*" "react-dom": "*"
} }
}, },
"node_modules/@docusaurus/plugin-client-redirects": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.4.0.tgz",
"integrity": "sha512-HsS+Dc2ZLWhfpjYJ5LIrOB/XfXZcElcC7o1iA4yIVtiFz+LHhwP863fhqbwSJ1c6tNDOYBH3HwbskHrc/PIn7Q==",
"dependencies": {
"@docusaurus/core": "2.4.0",
"@docusaurus/logger": "2.4.0",
"@docusaurus/utils": "2.4.0",
"@docusaurus/utils-common": "2.4.0",
"@docusaurus/utils-validation": "2.4.0",
"eta": "^2.0.0",
"fs-extra": "^10.1.0",
"lodash": "^4.17.21",
"tslib": "^2.4.0"
},
"engines": {
"node": ">=16.14"
},
"peerDependencies": {
"react": "^16.8.4 || ^17.0.0",
"react-dom": "^16.8.4 || ^17.0.0"
}
},
"node_modules/@docusaurus/plugin-content-blog": { "node_modules/@docusaurus/plugin-content-blog": {
"version": "2.4.0", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.0.tgz", "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.0.tgz",

View File

@ -15,6 +15,7 @@
}, },
"dependencies": { "dependencies": {
"@docusaurus/core": "2.4.0", "@docusaurus/core": "2.4.0",
"@docusaurus/plugin-client-redirects": "^2.4.0",
"@docusaurus/preset-classic": "2.4.0", "@docusaurus/preset-classic": "2.4.0",
"@mdx-js/react": "^1.6.22", "@mdx-js/react": "^1.6.22",
"clsx": "^1.2.1", "clsx": "^1.2.1",

View File

@ -0,0 +1,18 @@
import React, { useEffect } from 'react';
import { useHistory } from 'react-router-dom';
function removeHashSlash(url) {
return url.replace(/\/#\//, '/');
}
export default function DocsifyForwarder(props) {
const history = useHistory();
const currentUrl = window.location.href;
if (currentUrl.includes('/#/')) {
const newUrl = removeHashSlash(currentUrl);
window.history.replaceState({}, '', newUrl);
const relativePath = new URL(newUrl).pathname;
history.push(relativePath);
}
return "";
}