c/docs/.vitepress/config.mts
2024-10-08 11:44:30 +08:00

120 lines
4.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { defineConfig } from 'vitepress'
import { nav } from './navbar'
import sidebar from './sidebar'
import dayjs from 'dayjs'
import { loadEnv } from 'vite'
const mode = process.env.NODE_ENV || 'development'
const { VITE_BASE_URL } = loadEnv(mode, process.cwd())
console.log('Mode:', process.env.NODE_ENV)
console.log('VITE_BASE_URL:', VITE_BASE_URL)
// https://vitepress.dev/reference/site-config
export default defineConfig({
lang: 'zh-CN', // 语言
title: "许大仙", // 站点名称
titleTemplate: "Hi终于等到你", // 网页标题
description: "许大仙前端、Java、大数据、云原生", // 站点描述
head: [ // favicon.ico 图标等
['link', { rel: "shortcut icon", href: `/logo.svg` }],
// 网站 favicon.ico 图标
['link', { rel: "icon", href: `/logo.svg`, type: "image/svg+xml" }],
// 引入 Google Fonts
['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }],
['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }],
['link', { href: 'https://fonts.googleapis.com/css2?family=Roboto&display=swap', rel: 'stylesheet' }],
// 网页视口
['meta', { name: "viewport", content: "width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,shrink-to-fit=no" }],
// 关键词和描述
['meta', { name: "keywords", content: "许大仙,许大仙的博客" }],
],
appearance: true, // 主题模式,默认浅色且开启切换
base: VITE_BASE_URL,
transformHtml: (code) => {
// 匹配所有 href 链接,并检查其中是否有 target="_blank"
return code.replace(/href="([^"]*)"(.*?)>/g, (match, href, rest) => {
// 如果链接包含 target="_blank" 并且以 base 开头
if (rest.includes('target="_blank"') && href.startsWith(VITE_BASE_URL)) {
// 去掉 href 中的 base 前缀
const newHref = href.replace(VITE_BASE_URL, '/') // 保留一个 '/'
return `href="${newHref}"${rest}>`
}
// 否则返回原链接
return match
})
},
lastUpdated: true, // 上次更新
vite: {
build: {
chunkSizeWarningLimit: 1600
},
plugins: [],
server: {
port: 18088
}
},
markdown: { // markdown 配置
math: true,
lineNumbers: true, // 行号显示
image: {
// 开启图片懒加载
lazyLoading: true
},
// 组件插入h1标题下
config: (md) => {
// 创建 markdown-it 插件
md.use((md) => {
const defaultRender = md.render
md.render = function (...args) {
const [content, env] = args
const isHomePage = env.path === '/' || env.relativePath === 'index.md' // 判断是否是首页
if (isHomePage) {
return defaultRender.apply(md, args) // 如果是首页,直接渲染内容
}
// 调用原始渲染
let defaultContent = defaultRender.apply(md, args)
// 替换内容
defaultContent = defaultContent.replace(/NOTE/g, '提醒')
.replace(/TIP/g, '建议')
.replace(/IMPORTANT/g, '重要')
.replace(/WARNING/g, '警告')
.replace(/CAUTION/g, '注意')
// 返回渲染的内容
return defaultContent
}
})
}
},
themeConfig: { // 主题设置
lastUpdatedText: '上次更新', // 上次更新显示文本
returnToTopLabel: '返回顶部', // 更改手机端菜单文字显示
search: { // 本地搜索
provider: 'local'
},
logo: '/logo.svg', // 左上角logo
nav: nav, // 导航栏
sidebar: sidebar, // 侧边栏
socialLinks: [ // 社交链接
{ icon: 'github', link: 'https://github.com/Aurorxa' },
],
docFooter: { // 自定义上下页名
prev: '上一篇', next: '下一篇'
},
darkModeSwitchLabel: '深浅模式', // 手机端深浅模式文字修改
footer: { // 页脚
message: 'Released under the MIT License.',
copyright: `Copyright © ${dayjs().format("YYYY")} 许大仙`
},
outline: { // 大纲显示 1-6 级标题
level: [1, 6],
label: '目录'
},
//大纲顶部标题
outlineTitle: '当前页大纲',
}
})