Skip to content

Commit 4f969a3

Browse files
committed
refactor(vitepress): 优化 TypeScript 类型与模块导入
- 统一使用 type 导入 TypeScript 类型 - 明确为 .js 文件添加后缀,提升兼容性 - 增加类型注解,提升代码可读性与安全性 - 优化 nullish 合并与可选链写法 - package.json 增加 "type": "module" 字段 - 规范 DefaultTheme 扩展方式,使用 satisfies Theme
1 parent 6ca9ea8 commit 4f969a3

File tree

11 files changed

+28
-27
lines changed

11 files changed

+28
-27
lines changed

course/.vitepress/config.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { defineConfig } from "vitepress";
22

3-
import themeConfig from "./themeConfig";
3+
import themeConfig from "./themeConfig.js";
44

55
export default defineConfig({
66
lang: "zh-CN",

course/.vitepress/nav.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DefaultTheme } from "vitepress";
1+
import type { DefaultTheme } from "vitepress";
22

33
export default [
44
{ text: "主页", link: "/" },

course/.vitepress/sidebar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DefaultTheme } from "vitepress";
1+
import type { DefaultTheme } from "vitepress";
22

33
export default [
44
{

course/.vitepress/socialLinks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DefaultTheme } from "vitepress";
1+
import type { DefaultTheme } from "vitepress";
22

33
export default [
44
{ icon: "github", link: "https://github.com/zigcc/zig-course" },

course/.vitepress/theme/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
const version = "0.14.0";
1+
const version: string = "0.14.0";
22

33
export { version };

course/.vitepress/theme/giscus.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,14 @@ import { defineComponent, h } from "vue";
33
import { useData, useRoute } from "vitepress";
44
import Giscus from "@giscus/vue";
55

6-
const is_dev = process.env.NODE_ENV === "development";
6+
const is_dev: boolean = process.env.NODE_ENV === "development";
77

88
export default defineComponent({
99
setup() {
1010
const { isDark, title, frontmatter } = useData();
1111

1212
return () =>
13-
is_dev ||
14-
!(typeof frontmatter.value.comments == "undefined"
15-
? true
16-
: frontmatter.value.comments)
13+
is_dev || !(frontmatter.value.comments ?? true)
1714
? h("div")
1815
: h(
1916
"div",

course/.vitepress/theme/index.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
// .vitepress/theme/index.js
1+
// .vitepress/theme/index.ts
2+
import type { Theme } from "vitepress";
23
import DefaultTheme from "vitepress/theme";
34

4-
import giscus from "./giscus";
5-
import version from "./version";
5+
import giscus from "./giscus.js";
6+
import version from "./version.js";
67
import "./style/print.css";
78

89
import { h } from "vue";
910

1011
export default {
11-
...DefaultTheme,
12+
extends: DefaultTheme,
1213
enhanceApp(ctx: any) {
1314
DefaultTheme.enhanceApp(ctx);
1415
if (typeof window != "undefined") {
@@ -33,4 +34,4 @@ export default {
3334
"doc-before": () => h(version),
3435
});
3536
},
36-
};
37+
} satisfies Theme;

course/.vitepress/theme/version.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
import { defineComponent, h, ref, computed } from "vue";
2+
import type { Ref, ComputedRef } from "vue";
23

34
import { useData } from "vitepress";
4-
import { version } from "./config";
5+
import { version } from "./config.js";
56

67
export default defineComponent({
78
setup() {
89
const { isDark, frontmatter } = useData();
910

10-
const currentVersion = ref(version);
11+
const currentVersion: Ref<string> = ref(version);
1112

12-
const fontColor = computed(() => (isDark.value ? "#fff" : "#000"));
13+
const fontColor: ComputedRef<string> = computed(() => (isDark.value ? "#fff" : "#000"));
1314

14-
const backgroundColor = computed(() =>
15+
const backgroundColor: ComputedRef<string> = computed(() =>
1516
isDark.value ? "#14120F" : "#ebedf0",
1617
);
1718

course/.vitepress/themeConfig.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { DefaultTheme } from "vitepress";
2-
import sidebar from "./sidebar";
3-
import nav from "./nav";
4-
import socialLinks from "./socialLinks";
1+
import type { DefaultTheme } from "vitepress";
2+
import sidebar from "./sidebar.js";
3+
import nav from "./nav.js";
4+
import socialLinks from "./socialLinks.js";
55

66
const config: DefaultTheme.Config = {
77
editLink: {

course/.vitepress/vitepress-pdf.config.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
import type { DefaultTheme } from "vitepress";
33
import { defineUserConfig } from "vitepress-export-pdf";
44

5-
import sidebar from "./sidebar";
5+
import sidebar from "./sidebar.js";
66

7-
let links: string[] = [];
7+
const links: string[] = [];
88

9-
function ExtractLinks(item: DefaultTheme.SidebarItem) {
9+
function ExtractLinks(item: DefaultTheme.SidebarItem): void {
1010
if (item.link) {
1111
if (item.link === "/") {
1212
// 此处额外打了一个补丁,因为首页的链接是 /index
@@ -16,10 +16,11 @@ function ExtractLinks(item: DefaultTheme.SidebarItem) {
1616
}
1717
}
1818

19-
if (item.items)
19+
if (item.items) {
2020
for (const key in item.items) {
2121
ExtractLinks(item.items[key]);
2222
}
23+
}
2324
}
2425

2526
for (const key in sidebar) {

0 commit comments

Comments
 (0)