Skip to content

Commit e8eee98

Browse files
Convert Docusaurus configuration to TypeScript
1 parent 3adfb81 commit e8eee98

File tree

3 files changed

+34
-35
lines changed

3 files changed

+34
-35
lines changed

Diff for: docusaurus.config.js renamed to docusaurus.config.ts

+25-32
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
1-
/** @type {import('@docusaurus/types').DocusaurusConfig} */
2-
module.exports = {
1+
import { Config } from '@docusaurus/types';
2+
import * as Docs from '@docusaurus/plugin-content-docs';
3+
import * as Blog from '@docusaurus/plugin-content-blog';
4+
import * as Pages from '@docusaurus/plugin-content-pages';
5+
import * as Sitemap from '@docusaurus/plugin-sitemap';
6+
import * as ClientRedirects from '@docusaurus/plugin-client-redirects';
7+
import * as ThemeClassic from '@docusaurus/theme-classic';
8+
import * as SearchLocal from '@easyops-cn/docusaurus-search-local';
9+
import redirects from './redirects';
10+
11+
const config: Config = {
312
title: 'Jellyfin',
413
tagline: 'The Free Software Media System',
514
url: 'https://jellyfin.org',
@@ -9,7 +18,6 @@ module.exports = {
918
favicon: 'images/favicon.ico',
1019
organizationName: 'jellyfin',
1120
projectName: 'jellyfin.org',
12-
/** @type {import('@docusaurus/types').ThemeConfig} */
1321
themeConfig: {
1422
image: 'images/social.png',
1523
metadata: [
@@ -97,62 +105,45 @@ Site content is licensed <a href='http://creativecommons.org/licenses/by-nd/4.0/
97105
// Main content
98106
[
99107
'@docusaurus/plugin-content-docs',
100-
/** @type {import('@docusaurus/plugin-content-docs').Options} */
101108
{
102-
sidebarPath: require.resolve('./sidebars.js'),
109+
sidebarPath: './sidebars.ts',
103110
editUrl: 'https://github.com/jellyfin/jellyfin.org/edit/master/'
104-
}
111+
} satisfies Docs.Options
105112
],
106113
[
107114
'@docusaurus/plugin-content-blog',
108-
/** @type {import('@docusaurus/plugin-content-blog').Options} */
109115
{
110116
id: 'blog-main',
111117
routeBasePath: 'posts',
112118
showReadingTime: true,
113119
path: 'blog'
114-
}
115-
],
116-
[
117-
'@docusaurus/plugin-content-pages',
118-
/** @type {import('@docusaurus/plugin-content-pages').Options} */
119-
{}
120+
} satisfies Blog.Options
120121
],
122+
['@docusaurus/plugin-content-pages', {} satisfies Pages.Options],
121123
// Others
122-
[
123-
'@docusaurus/plugin-sitemap',
124-
/** @type {import('@docusaurus/plugin-sitemap').Options} */
125-
{}
126-
],
127-
[
128-
'docusaurus-plugin-sass',
129-
/** @type {import('docusaurus-plugin-sass').Options} */
130-
{}
131-
],
124+
['@docusaurus/plugin-sitemap', {} satisfies Sitemap.Options],
125+
['docusaurus-plugin-sass', {}],
132126
[
133127
'@docusaurus/plugin-client-redirects',
134-
/** @type {import('@docusaurus/plugin-client-redirects').Options} */
135128
{
136129
fromExtensions: ['html'],
137-
redirects: require('./redirects.js')
138-
}
130+
redirects: redirects
131+
} satisfies ClientRedirects.Options
139132
]
140133
],
141134
themes: [
142135
[
143-
require.resolve('@docusaurus/theme-classic'),
144-
/** @type {import('@docusaurus/theme-classic').Options} */
136+
'@docusaurus/theme-classic',
145137
{
146138
customCss: [
147139
require.resolve('@fontsource/noto-sans/index.css'),
148140
require.resolve('./src/css/custom.scss'),
149141
require.resolve('./src/css/swiper.scss')
150142
]
151-
}
143+
} satisfies ThemeClassic.Options
152144
],
153145
[
154-
require.resolve('@easyops-cn/docusaurus-search-local'),
155-
/** @type {import('@easyops-cn/docusaurus-search-local').Options} */
146+
'@easyops-cn/docusaurus-search-local',
156147
{
157148
hashed: true,
158149
indexBlog: false,
@@ -164,7 +155,9 @@ Site content is licensed <a href='http://creativecommons.org/licenses/by-nd/4.0/
164155
/^posts\//
165156
],
166157
explicitSearchResultPath: true
167-
}
158+
} satisfies SearchLocal.PluginOptions
168159
]
169160
]
170161
};
162+
163+
export default config;

Diff for: redirects.js renamed to redirects.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
/** @type {import('@docusaurus/plugin-client-redirects').Options['redirects']} */
2-
module.exports = [
1+
import * as ClientRedirects from '@docusaurus/plugin-client-redirects';
2+
3+
const redirects: ClientRedirects.Options['redirects'] = [
34
// These pages existed on the jellyfin-blog site, but were not fully configured
45
{
56
from: ['/categories', '/tags'],
@@ -38,3 +39,4 @@ module.exports = [
3839
to: '/docs/general/installation/source'
3940
}
4041
];
42+
export default redirects;

Diff for: sidebars.js renamed to sidebars.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { SidebarConfig } from '@docusaurus/plugin-content-docs/src/sidebars/types';
2+
13
/**
24
* Creating a sidebar enables you to:
35
- create an ordered group of docs
@@ -9,7 +11,7 @@
911
Create as many sidebars as you want.
1012
*/
1113

12-
module.exports = {
14+
const sidebars: SidebarConfig = {
1315
// By default, Docusaurus generates a sidebar from the docs folder structure
1416
docs: [
1517
// "docs/general" pages
@@ -18,3 +20,5 @@ module.exports = {
1820
{ type: 'link', label: 'API Documentation', href: 'https://api.jellyfin.org' }
1921
]
2022
};
23+
24+
export default sidebars;

0 commit comments

Comments
 (0)