贡献指南
感谢你考虑为本知识库做出贡献!
贡献方式
内容贡献
欢迎贡献以下内容:
- 新增章节和文章
- 修正错误和错别字
- 改进文档结构
- 添加示例代码
- 翻译内容
问题反馈
发现问题时:
- 检查是否已有相关问题
- 创建详细的 Issue 描述
- 提供复现步骤(如适用)
功能建议
欢迎提出改进建议:
- 新功能想法
- 用户体验优化
- 性能改进建议
贡献流程
Fork 工作流
bash
# 1. Fork 本仓库到你的账户
# 2. 克隆到本地
git clone https://github.com/zhangweilong/obsidian-notes.git
# 3. 创建分支
git checkout -b feature/your-feature
# 4. 进行更改
# 编辑文件...
# 5. 提交更改
git add .
git commit -m "feat: 添加新章节"
# 6. 推送到 Fork
git push origin feature/your-feature
# 7. 创建 Pull Request提交信息规范
yaml
提交类型:
feat: 新功能/新内容
fix: 修复问题
docs: 文档更新
style: 格式调整
refactor: 重构优化
chore: 维护任务
示例:
feat: 添加 AI 辅助功能章节
fix: 修正安装步骤描述
docs: 更新 API 参考文档文档规范
文件命名
yaml
命名规则:
- 使用小写字母
- 使用连字符分隔
- 使用有意义的名称
示例:
✓ getting-started.md
✓ plugin-development.md
✗ Getting Started.md
✗ 新建文档.mdFrontmatter
每个文档应包含 frontmatter:
markdown
---
title: 文档标题
description: 简短描述(用于 SEO 和预览)
---标题结构
markdown
# 主标题(H1)
简介段落...
## 二级标题
### 三级标题
#### 四级标题(尽量避免更深层级)代码块
指定语言以启用语法高亮:
markdown
```javascript
console.log('Hello');
```
```bash
npm install obsidian
```表格
markdown
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 内容 | 内容 | 内容 |链接
markdown
# 内部链接
[链接文本](/path/to/page)
# 外部链接
[链接文本](https://example.com)内容指南
写作风格
- 使用简洁清晰的语言
- 避免冗长的句子
- 使用主动语态
- 提供具体示例
内容结构
markdown
# 标题
简短介绍(1-2 段)
## 主要内容
### 子主题
## 示例
## 注意事项
## 相关链接
## 下一步示例代码
- 确保代码可运行
- 添加必要注释
- 说明运行环境
审核流程
PR 审核
- 自动检查(格式、链接)
- 内容审核
- 建议修改(如需要)
- 合并到主分支
审核标准
- 内容准确性
- 格式规范性
- 链接有效性
- 无拼写错误
本地预览
bash
# 安装依赖
npm install
# 启动开发服务器
npm run docs:dev
# 构建生产版本
npm run docs:build
# 质量检查
npm run check # frontmatter + 链接校验
npm run check:doc-count # 文档计数一致性校验
npm run typecheck # TypeScript 类型检查
npm run lint # ESLint 代码规范
npm run check:all # 一键全量检查插件教程映射规范
插件市场通过 docs/public/data/plugin-tutorials.json 将插件与站内教程关联,并在插件详情弹窗展示「教程」入口。新增或调整教程时需遵循以下约定,避免详情弹窗出现断链:
教程存放位置
- 所有插件教程统一集中在
docs/advanced/plugin-tutorials/<id>.md(<id>为插件在官方列表中的 ID,小写字母 + 连字符),文件名即插件 ID,与映射表键一一对应。 - 一个插件的多篇教程(如基础 + 进阶)归并到同一个文件,以
##二级标题分节。 - 通用速查表(如
reference/dataview-cheatsheet)不属于插件教程叙事,保留在docs/reference/原位,教程入口可直接指向其/reference/...路径。 - 新建教程后,将站内路径登记到映射表,URL 以
/开头、不含.md后缀,例如/advanced/plugin-tutorials/dataview。 - 旧路径(迁移前所在目录)已在
docs/.vitepress/redirects.ts配置重定向,无需手工维护外链兼容。
映射表格式
plugin-tutorials.json 为扁平结构,键为插件 ID,值为其教程列表:
json
{
"dataview": {
"tutorials": [
{ "title": "Dataview 实战", "url": "/advanced/plugin-tutorials/dataview", "type": "advanced" }
]
}
}字段说明:
title:教程在详情弹窗中显示的标题url:站内路由路径(需对应docs/<path>.md真实文件,否则会被校验脚本标记为断链)type:难度标识,beginner/advanced/reference三选一
校验
执行同步脚本时,validateData 会检查:
- 映射表中的插件 ID 是否都在官方插件列表中;
- 每个教程
url对应的docs/<path>.md文件是否存在(不存在则输出断链警告)。
提交前可运行 npm run sync:quick(或完整同步)触发校验。
新增文档流程
1. 创建文档
bash
# 在对应目录创建 .md 文件
# 文件名使用小写字母 + 连字符,如 dataviewjs-advanced.md
touch docs/advanced/your-new-doc.md2. 添加 Frontmatter
yaml
---
title: 文档标题
description: 简短描述(用于 SEO 和预览,10-200 字符)
category: "进阶功能" # 对应模块分类
tags: ["标签1", "标签2"] # 2-5 个标签
---3. 更新侧边栏
编辑 docs/.vitepress/sidebar/index.ts,在对应分组中添加:
typescript
{ text: '你的文档标题', link: '/advanced/your-new-doc' },4. 检查并提交
bash
# 运行质量检查
npm run check
npm run check:doc-count
# 提交
git add .
git commit -m "feat: 新增文档标题"文档结构模板
markdown
---
title: 文档标题
description: 简短描述
category: "分类名"
tags: ["标签"]
---
# 文档标题
简介段落(1-2 段说明本文内容)
## 主要内容
### 子主题
## 示例
## 注意事项
## 相关文档
- [相关文档 1](/path/to/doc) — 简要说明获取帮助
- 创建 Issue 提问
- 在 PR 中 @ 维护者
- 查看现有文档参考
行为准则
- 尊重所有贡献者
- 接受建设性批评
- 关注对社区有益的内容
- 保持友好和专业
再次感谢你的贡献! 🎉
👥 贡献者
感谢所有为本项目做出贡献的开发者!
