init: DPDK → DPU learning blog (VitePress)

- VitePress static site for rendering all markdown documents
- Auto-discovers .md files from dpdk-roadmap-v3 and dpdk-study-kb
- Features: full-text search, dark mode, responsive design
- Pages: roadmap, notes (Phase 0-3), product docs, knowledge base
This commit is contained in:
newbie
2026-08-09 15:42:47 +00:00
commit 41531c19c2
20 changed files with 9262 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
import { defineConfig } from 'vitepress'
export default defineConfig({
title: 'DPDK → DPU 学习笔记',
description: 'DPDK learning roadmap, uNOS design, home gateway product specs, and knowledge base',
lang: 'zh-CN',
base: '/',
themeConfig: {
nav: [
{ text: '首页', link: '/' },
{ text: '学习路线', link: '/roadmap' },
{ text: '学习笔记', link: '/notes/' },
{ text: '知识库', link: '/kb' },
{ text: '产品设计', link: '/products' },
],
sidebar: {
'/notes/': [
{
text: 'Phase 0 — 基础',
items: [
{ text: 'Day01: PCIe 拓扑', link: '/notes/phase0/day01-pcie-topology' },
{ text: 'Day02: 内核收包路径', link: '/notes/phase0/day02-kernel-rx-path' },
{ text: 'Day03: 内核内存管理', link: '/notes/phase0/day03-kernel-memory' },
{ text: 'Day04: RCU & Lock-free', link: '/notes/phase0/day04-rcu-lockfree' },
]
},
{
text: 'Week 1 (Jul 21+)',
items: [
{ text: 'Day001: PCIe 拓扑深度分析', link: '/notes/week1/day001-pcie-topology' },
]
}
],
'/products/': [
{
text: '产品文档',
items: [
{ text: 'DPDK Home Gateway 产品方案', link: '/products/home-gateway' },
{ text: 'uNOS 设计规格', link: '/products/unos-design' },
{ text: 'uNOS 学习方法论', link: '/products/unos-method' },
]
}
],
'/kb/': [
{
text: '知识库',
items: [
{ text: '索引', link: '/kb/' },
{ text: '2026-08 更新', link: '/kb/2026-08' },
]
}
],
},
socialLinks: [
{ icon: 'github', link: 'http://localhost:3000/wxj/dpdk-roadmap-v3' }
],
search: {
provider: 'local',
options: {
translations: {
button: { buttonText: '搜索文档' },
modal: { displayDetails: '显示详情', noResultsText: '无结果', resetButtonTitle: '重置' }
}
}
},
outline: { level: [2, 3], label: '目录' },
docFooter: { prev: '上一篇', next: '下一篇' },
darkModeSwitchLabel: '深色模式',
sidebarMenuLabel: '菜单',
returnToTopLabel: '回到顶部',
lastUpdated: { text: '最后更新' },
},
markdown: {
lineNumbers: true,
},
})
+97
View File
@@ -0,0 +1,97 @@
/* Custom styles for DPDK → DPU Blog */
:root {
--vp-c-brand-1: #2563eb;
--vp-c-brand-2: #3b82f6;
--vp-c-brand-3: #1d4ed8;
--vp-c-brand-soft: rgba(37, 99, 235, 0.14);
--vp-font-family-base: 'Inter', 'Noto Sans SC', -apple-system, BlinkMacSystemFont, sans-serif;
--vp-font-family-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
}
/* Hero section tweaks */
.VPHero .name {
background: linear-gradient(135deg, #2563eb, #06b6d4);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.VPHero .text {
font-size: 2.5rem;
}
/* Blog-like content */
.vp-doc h1 {
font-size: 2rem;
font-weight: 700;
letter-spacing: -0.02em;
}
.vp-doc h2 {
font-size: 1.5rem;
font-weight: 600;
border-bottom: 1px solid var(--vp-c-divider);
padding-bottom: 0.3em;
margin-top: 2em;
}
/* Code blocks */
.vp-doc div[class*='language-'] {
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.vp-doc code {
font-size: 0.9em;
}
/* Inline code */
.vp-doc :not(pre) > code {
background: var(--vp-c-bg-soft);
border-radius: 4px;
padding: 0.15em 0.4em;
color: var(--vp-c-brand-1);
}
/* Tables */
.vp-doc table {
width: 100%;
border-collapse: collapse;
margin: 1.5em 0;
}
.vp-doc th {
background: var(--vp-c-bg-soft);
font-weight: 600;
}
.vp-doc tr:nth-child(even) {
background: var(--vp-c-bg-soft);
}
/* Timeline-style for notes */
.vp-doc ul:has(li input[type="checkbox"]) {
list-style: none;
padding-left: 0;
}
/* Print-friendly */
@media print {
.VPNav, .VPSidebar, .VPFooter {
display: none;
}
}
/* Dark mode tweaks */
.dark .VPHero .name {
background: linear-gradient(135deg, #60a5fa, #22d3ee);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.dark .vp-doc div[class*='language-'] {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
+4
View File
@@ -0,0 +1,4 @@
import DefaultTheme from 'vitepress/theme'
import './custom.css'
export default DefaultTheme