1- import { writeFileSync } from 'node:fs'
2- import { resolve } from 'node:path'
1+ import { writeFileSync , mkdirSync } from 'node:fs'
2+ import { resolve , dirname } from 'node:path'
33import { defineConfig } from 'vitepress'
44
55const SITE_URL = 'https://docs.senchabot.com'
@@ -17,6 +17,31 @@ function generateSitemap(siteConfig: any) {
1717 writeFileSync ( resolve ( siteConfig . outDir , 'sitemap.xml' ) , sitemap )
1818}
1919
20+ const redirects : Record < string , string > = {
21+ '/kick-bot' : '/kick-bot/getting-started' ,
22+ '/tr/kick-bot' : '/tr/kick-bot/getting-started' ,
23+ '/twitch-bot' : '/twitch-bot/getting-started' ,
24+ '/tr/twitch-bot' : '/tr/twitch-bot/getting-started' ,
25+ '/discord-bot' : '/discord-bot/getting-started' ,
26+ '/tr/discord-bot' : '/tr/discord-bot/getting-started' ,
27+ }
28+
29+ function generateRedirects ( siteConfig : any ) {
30+ for ( const [ from , to ] of Object . entries ( redirects ) ) {
31+ const filePath = resolve ( siteConfig . outDir , from . replace ( / ^ \/ / , '' ) + '.html' )
32+ mkdirSync ( dirname ( filePath ) , { recursive : true } )
33+ const html = `<!DOCTYPE html>
34+ <html lang="en">
35+ <head>
36+ <meta charset="UTF-8">
37+ <meta http-equiv="refresh" content="0; url=${ to } ">
38+ <link rel="canonical" href="${ SITE_URL } ${ to } ">
39+ </head>
40+ </html>`
41+ writeFileSync ( filePath , html )
42+ }
43+ }
44+
2045const structuredData = {
2146 '@context' : 'https://schema.org' ,
2247 '@graph' : [
@@ -78,7 +103,10 @@ export default defineConfig({
78103 cleanUrls : true ,
79104 ignoreDeadLinks : true ,
80105
81- buildEnd : generateSitemap ,
106+ buildEnd ( siteConfig ) {
107+ generateSitemap ( siteConfig )
108+ generateRedirects ( siteConfig )
109+ } ,
82110
83111 transformHead ( { pageData, siteConfig } ) {
84112 const pagePath = pageData . relativePath . replace ( / \. m d $ / , '' ) . replace ( / \/ i n d e x $ / , '' )
@@ -242,7 +270,7 @@ export default defineConfig({
242270 // Twitch - EN
243271 {
244272 text : 'Twitch Bot' ,
245- collapsed : false ,
273+ collapsed : true ,
246274 items : [
247275 {
248276 text : 'Getting Started' ,
@@ -306,7 +334,7 @@ export default defineConfig({
306334 } ,
307335 {
308336 text : 'Modules' ,
309- collapsed : true ,
337+ collapsed : false ,
310338 items : [
311339 {
312340 text : 'Live Stream Announcements' ,
@@ -344,7 +372,7 @@ export default defineConfig({
344372 } ,
345373 {
346374 text : 'Kick Bot' ,
347- collapsed : false ,
375+ collapsed : true ,
348376 items : [
349377 {
350378 text : 'Getting Started' ,
@@ -410,7 +438,7 @@ export default defineConfig({
410438 // Twitch - TR
411439 {
412440 text : 'Twitch Bot' ,
413- collapsed : false ,
441+ collapsed : true ,
414442 items : [
415443 {
416444 text : 'Başlamadan Önce' ,
@@ -474,7 +502,7 @@ export default defineConfig({
474502 } ,
475503 {
476504 text : 'Modüller' ,
477- collapsed : true ,
505+ collapsed : false ,
478506 items : [
479507 {
480508 text : 'Canlı Yayın Duyuruları' ,
@@ -512,7 +540,7 @@ export default defineConfig({
512540 } ,
513541 {
514542 text : 'Kick Bot' ,
515- collapsed : false ,
543+ collapsed : true ,
516544 items : [
517545 {
518546 text : 'Başlamadan Önce' ,
0 commit comments