WeaveFox 文档站点,基于 Docusaurus 3 构建。
docs/
├── docusaurus.config.ts # Docusaurus 站点配置
├── sidebars.ts # 侧边栏配置
├── src/
│ ├── css/ # 自定义样式
│ └── pages/ # 自定义页面
├── docs/ # 文档内容(Markdown)
├── blog/ # 博客内容(Markdown)
├── static/ # 静态资源
├── package.json
├── pnpm-workspace.yaml # 空 workspace,隔离主仓库
└── .npmrc # 使用 npm 官方 registry
# 安装依赖(在 docs/ 目录下执行)
pnpm install
# 本地开发
pnpm start
# 构建
pnpm build
# 本地预览构建产物
pnpm serve样式覆写集中在 src/css/custom.css,遵循 CSS 优先、Swizzle 最后 的原则。
去 node_modules 中查看 @docusaurus/theme-classic 源码:
- 定位组件源码目录 — pnpm 项目下路径为
node_modules/.pnpm/@docusaurus+theme-classic@版本号_*/node_modules/@docusaurus/theme-classic/src/theme/ - 阅读组件 TSX — 找到
clsx()、className中使用的稳定类名(如theme-doc-sidebar-container、hash-link、menu__link--active),这些是跨版本稳定的 - 阅读组件 CSS Module — 同目录下的
styles.module.css,查看组件用了哪些 CSS 属性和变量(如border-right、box-shadow、content),确认覆写目标 - 查找 Infima 变量 — 如果是全局样式(颜色、阴影、间距),优先找
--ifm-*变量覆写,避免硬编码 - 避免使用 CSS Module 哈希类名 — 形如
styles_xxx_yyy的类名是构建时生成的,升级后会变
按优先级从高到低尝试:
| 优先级 | 方式 | 适用场景 |
|---|---|---|
| 1 | Infima CSS 变量 | 全局颜色、间距、阴影等(--ifm-* 变量) |
| 2 | 稳定类名 + CSS 属性 | 组件级别样式(边框、间距、隐藏等) |
| 3 | mask-image + CSS 变量 | 自定义图标且需要跟随主题切换颜色 |
| 4 | clientModule + CSS | 需要 JS 交互的样式(如滚动检测) |
| 5 | Swizzle Wrap/Eject | 需要修改组件 DOM 结构时才使用 |
- 亮色模式变量在
:root中定义,暗色模式在[data-theme='dark']中覆写 - 使用
var(--ifm-font-color-base)等变量时,暗色模式会自动切换,无需额外处理 - 硬编码颜色值(如
rgba(0,0,0,0.12))需要在[data-theme='dark']中单独调整
- data URI SVG 中
currentColor不生效 — SVG 在 data URI 中是独立文档,不继承父元素颜色。用mask-image方案:SVG 只定义形状(stroke='black'),颜色由background-color: var(--ifm-font-color-base)控制