Appearance
配置vitepress
配置自动生成目录
vitepress 的配置
ts
//config.ts
import genDiarySidebar from "./diarySidebar";
import umToolsSidebar from "./umToolsSidebar";
import { defineConfig } from "vitepress";
export default async () => {
let diarySidebar = await genDiarySidebar.genDiarySidebar();
return defineConfig({
title: "Humi's note",
description: "For recording.",
themeConfig: {
nav: [],
footer: {},
sidebar: {
...umToolsSidebar.sidebar,
...diarySidebar,
},
search: {
provider: "local",
options: {
_render(src, env, md) {
const html = md.render(src, env);
if (
env.frontmatter?.search === true ||
env.relativePath.startsWith("diary")
) {
return html;
}
return "";
},
},
},
},
lastUpdated: true,
vite: {
build: {},
define: {},
},
});
};
ts
//diarySidebar.js
import fg from "fast-glob";
import matter from "gray-matter";
import dayjs from "dayjs";
// import { resolve } from "path";
const sidebar: {
[key: string]: {
text: string;
collapsed: boolean;
link: string;
items?: {}[];
}[];
} = {
"diary/": [
{ text: "学习笔记", collapsed: false, link: "./index", items: [] },
],
};
console.log("Genarating diarySidebar...");
const scan = async () => {
// console.log(resolve("./"));
//console.log("start scan");
const files = await fg(["diary/**/*.md", "!**/index*"], {
cwd: "docs",
stats: true,
});
for (const file of files.sort((fa, fb) => fb.stats.ctime - fa.stats.ctime)) {
const { data } = matter.read("docs/" + file.path);
if (data.createTime) {
//console.log(dayjs(data.createTime).locale("zh-cn"));
}
sidebar["diary/"][0].items?.push({
text: data.title ? data.title : file.name,
link: file.path,
});
}
};
const genDiarySidebar = async (): Promise<object> => {
await scan();
// console.log(sidebar);
return sidebar;
};
export default { genDiarySidebar };
vscode 的配置
json
{
"Markdown properties": {
// "scope": "Markdown",
"prefix": "frontmatter",
"body": [
"---",
"title: '$1'",
"createTime: '$CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND'",
"lastUpdated: true",
"---",
"# {{ \\$frontmatter.title }}"
],
"description": "Markdown file head"
}
}
配置图片缩放
来源 https://github.com/vuejs/vitepress/issues/854
js
// .vitepress/theme/index.js
import DefaultTheme from 'vitepress/theme';
import { onMounted } from 'vue';
import mediumZoom from 'medium-zoom';
import './index.css';
export default {
...DefaultTheme,
setup() {
onMounted(() => {
mediumZoom('[data-zoomable]', { background: 'var(--vp-c-bg)' });
});
},
};
css
/* .vitepress/theme/index.css */
.medium-zoom-overlay {
z-index: 99;
}
.medium-zoom-image {
z-index: 100;
}