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:
@@ -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,
|
||||
},
|
||||
})
|
||||
@@ -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);
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
import DefaultTheme from 'vitepress/theme'
|
||||
import './custom.css'
|
||||
|
||||
export default DefaultTheme
|
||||
Reference in New Issue
Block a user