c/docs/.vitepress/config.mts

120 lines
4.1 KiB
TypeScript
Raw Normal View History

2024-10-08 05:44:30 +02:00
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: '当前页大纲',
}
})