贡献与开发指南
约 4445 字大约 15 分钟
2025-02-22
编写者:rand777
本文已完成并校对
感谢您的无私奉献,项导文档基于 Vuepress 的 plume 主题构建,由多名成员共同维护,内容完全开源。
我是文档的编写者
项导文档使用 Markdown 语法进行编写,在您完成 Markdown 类型文档编写后可以:
- fork 仓库 ,并通过 GitHub 创建 拉取请求合并您的分支
- Email 到我们的 邮箱
- QQ 发送给 rand777
我想直接写一篇文档
将文档或资料发送给 rand777,我们会将您的文档转换为 markdown 格式并发布到项导文档站,生成预览链接并按照您的要求对其进行署名。
或者,非常轻松地,在每篇文档的最下方有 编辑此页
功能,使用即可进行编辑。
其他注意事项
请参考文档编写规范
我是文档站的开发者
在参与合作开发之前,您需要了解的一些基础知识:
项目结构
先大致了解下项目的结构
项目结构
.github
ISSUE_TEMPLATE#issue模板
文档完善.yml
新特性请求.yml
问题报告.yml
workflows
docs-deploy.yml# github-action 自动部署
lint.yml# ES Lint 语法检查
docs
.vuepress
public#静态资源文件夹
avatar#头像文件夹
…
icon#矢量图标文件夹
…
src#图片文件夹(请遵守静态资源命名规范)
…
theme#主题设置文件夹
style#主题自定义文件夹
custom.css#自定义主题
shim.d.ts#自定义vue组件导入
client.ts#客户端配置
config.ts#全局功能配置
navbar.ts#导航栏配置
notes.ts#笔记配置
plume.config.ts#主题选项配置
notes
CS-DIY#计算机自学指南
…
公共服务#项导公开的服务
…
大学百科#大学百科全书
…
学习笔记#学习笔记荟萃
…
项目文档#包含项目的介绍、人员等
…
begin.md#“开始阅读”页
contribute.md#“贡献”页
friends-organizations.md#友情链接-组织页
friends-persons.md#友情链接-个人页
friends-quotes.md#友情链接-常见问题页
Templates.md# Vuepress Plume 模板页
update-note.md#更新日志页
README.md#首页
.gitattributes#git属性设置
.gitignore#不进行git的文件(夹)
.npmrc#npm包管理设置
package.json#所有npm包依赖
LICENSE#开源项目许可证
pnpm-lock.yaml#所有pnpm包依赖
README.md#中文项导文档介绍
README-en.md#英文项导文档介绍
vercel.json#Vercel部署配置
…
配置开发环境
开发环境
支持跨平台开发:
推荐配置:
- Intel i5-12400 AMD Ryzen 5 3600X Apple M1 及以上
- 16GB DDR4 或 LPDDR4X 内存及以上
- 500G SSD或NVMe固态硬盘
软件需求:
- WebStorm 或VS Code
- Node.js LTS 22.18.0(2025年8月8日)
- git
下载 WebStorm
这个软件是咱们主要写代码的地方,软件本身用于前端开发,您可以在这里详细了解。其他同类型的开发软件,如 VS Code,也可以。
如果同学们对上面的软件不太清楚,请先完成学生邮箱申请并申请JetBrains教育版。下载WebStorm可以到 WebStorm官方网站 ;在校内也可以使用 Alist动态开源软件镜像站 下载。
下载 NVM
进行前端开发时,需要服务端 (server) 来支撑web应用的运行,Node.js 是目前非常流行的开源web服务器运行时环境。在运行不同的前端项目时,往往需要的 Node.js 版本要求是不一样的,而 NVM(全名:Node.js Version Manager)可以帮助我们更高效地管理不同的 Node.js 版本和依赖环境。
软件安装及应用教程参考开发工具,不要忘记安装长期支持版的 Node.js 哦!
为什么没有 nvm 命令
安装完成后记得重启 IDE 和终端以重载环境变量
导入项目
从哪儿导入
在学校优先使用校内 GitLab ,国内 gitee ,不过最好是 GitHub (可以减轻 Code Reviewer 的负担)
作为开源项目,最好是使用 fork 的方式将项目导入到您的个人 GitHub 账号下,通过 Pull Request 合并到主分支 master(下文会提到);
关于 GitHub上的 Pull Request ,可以阅读 Mr.Hope 的文章或 GitHub 官方文档
如果您所在的网络环境无法访问 GitHub ,也可以使用国内 Gitee 仓库或重庆医科大学 GitLab ,不过推送代码时需要注意将远程仓库地址改为 GitHub 地址,参考 Mr.Hope 的文章。
GitHubGitee或者直接 git 克隆到本地,使用 HTTPS 协议:
导入失败请参考“常见问题及解决方案”
从 Github 克隆(推荐)git clone https://github.com/PGuideDev/PGuide-Docs.git
从 GitLab CQMU 克隆git clone https://git.cqmu.edu.cn/PGuideDev/pguide-docs.git
从 Gitee 克隆git clone https://gitee.com/rand777/PGuide-Docs.git
git也可以使用SSH协议导入,需要 配置SSH 和 设置 GitHub
从 GitHub 克隆git clone git@github.com/PGuideDev/PGuide-Docs.git
从 Gitee 克隆git clone git@gitee.com:rand777/PGuide-Docs.git
从 GitLab CQMU 克隆git clone git@git.cqmu.edu.cn/PGuideDev/pguide-docs.git
如果您已在开发者行列中,打开 WebStorm 后,直接在 WebStorm 上点击“克隆仓库(Clone Repository )”,登录 GitHub 账号进行导入
安装项目依赖
为节省磁盘空间和优化安装效率,请安装 pnpm
在WebStorm终端中输入
npm install -g pnpm
安装好后,再输入
pnpm install
这样就完成了项目依赖的安装
启动本地开发环境
终端中输入
pnpm run docs:dev
打开 http://localhost:8080 即可访问本地开发环境。代码修改时,内容也会一起跟着改。
项目设置
将
.cache
.temp
.public
文件夹设置为排除(路径:docs/.vuepress/)避免IDE错误识别缓存TODO、svg命名空间错误
阅读开发规范章
经过上次的折腾,你就完成项导文档的开发环境配置了😀。为了让文档更加规范,协作更加得心应手,接下来请依次阅读
Git规范
、静态资源管理规范
、文档编写规范
、常见问题及解决方案
合作开发流程
rand777向成员派发TODO任务,各成员更新main分支,并Rebase到自己的开发分支,完成任务后提出PR并在开发群内通知rand777进行审核
Git 规范
项导文档开发 Git 规范采用 Angular 规范
提交规范
采用 Conventional Commits 标准:
类型 | 说明 | 示例 |
---|---|---|
feat | 新功能,比如引入了PDF导入 | feat: add @vuepress-plume-theme/pdf function |
fix | Bug 修复,比如不显示图标了 | fix(chore): fixed the version caused icon display error |
docs | 文档更新 | docs(update-note.md): update the doc |
style | 代码格式(空格、分号等) | style: PEP8 formatted |
refactor | 代码重构,比如把图片 A 换为图片 B | refactor: change picture A to B |
perf | 性能优化,比如删除了大图片 | perf(src/*.img): upload2oss |
test | 测试相关,比如测试跨域访问 | test(CORS): add 3rd party auth |
chore | 构建/工具变更,比如 ESlint 配置修改 | chore(eslint): update es@1.0.0 to es@1.0.1 |
示例:
git add .
git commit -m "feat: 添加用户登录功能"
开发与提交代码流程
确保已克隆仓库(如果您已经有仓库,直接进入下一步)
牵出开发分支
每个人单独一条开发分支,以
dev/你的名字某字母
定义,例如彭于晏的开发分支为dev/pyy
提交分支到远程仓库
远程仓库
编写完文档后按照 git 提交规范编写提交信息, 统一提交到 GitHub ,新开发者有一个
新
的标签;如果您是 fork 的方式导入仓库,则不需要设置此处。其他注意事项
- 开发分支在
master
分支签出,不要在其他人的dev
分支拉取!!! feat fix chore test
分支在开发完并且合并请求通过后,请自行删除!见 分支策略- 成员完成阶段性开发后,如涉及功能性更改,请自行迁出
test
测试分支,再请求合并到master
分支 - 请定期从
master
分支拉取更新 (git fetch) 以更新文档内容。
合并要求:
代码审查
自动测试,代码风格见内容规范,部署测试看有没有语法错误。
- 开发分支在
创建拉取请求Pull Request
哇,你真棒!只剩最后一步我们就能看到你的伟大贡献了。
在完成所在分支任务后,需要创建合并请求才能将更改应用到生产环境,下面是两种创建 PR 的方式
WebStorm创建创建 PR 后请选择 Code Reviewer 哦,这样才会收到要合并的审核消息,在群内说一声即可。
分支策略
分支类型 | 描述 | 命名示例 |
---|---|---|
main | 稳定生产版本 | - |
dev/* | 集成开发分支,每人一条 | 彭于晏的开发分支是dev/pyy |
feat/* | 功能开发分支 | feat/user-auth |
fix/* | Bug 修复分支 | fix/mobile-layout |
chore/* | 配置/工具调整 | chore/eslint-config |
test/* | 测试功能分支 | test/refactor-icon |
文档编写规范
编写内容规范
- 作者信息:请在每篇文档的最上方使用 谁谁谁 以便展示编者信息,方便文档订正和互相交流,可在
docs/templates.md
中添加您的作者信息; - 编写格式:文档统一使用 Markdown 格式,创建在
docs\notes
对应文件夹下,请注意修改永久链接permalink; - 标题级别:VuePress Plume 主题默认从二级标题开始,配置支持到六级标题,但建议控制在四级内;
- 排版布局:每行 Markdown 请空一行以换行;中英文、链接间应空一个空格,增加排版美观度;英文括号包英文,中文括号包中文;特别注意专业名词的大小写,如 GitHub 不是 github;
- AI工具:允许使用AI,不过现在的 AI 还请谨慎使用,使用其生成文档后必须审查内容可靠性!
文档状态规范
- 未完成请使用下面的语法标注在文档最上方:
这是一篇未完成的文档
- 如果是已经完成但未校对的
本文已完成,等待校对
- 如果是已经完成且已校对的
本文已完成并校对
- 文档中存在需要修改、不足之处
修改原因、不足之处描述
- 如果您对已经完成且已校对的有更好建议的
到 GitHub 提出完善文档的议题 (issue) ,选择文档修改类,将该 issue 和文档链接起来,指派 (Assign) 文档编写者为 Assignee ;或者简单地加入我们的开发群,在线交流一下?
新增页面
在 docs/
下创建 .md 文件,文档会按约定式路由自动生成路径。
创建一篇新文档后,需要关注开头的这几行
---
title: #文章标题
createTime: #创建时间(自动生成)
permalink: #永久链接
icon: #可选项,侧边栏图标
---
我暂时没写完,又不想显示出来
请在开头中添加 draft: true
title: #文章标题
createTime: #创建时间(自动生成)
permalink: #永久链接
icon: #可选项,侧边栏图标
draft: #true
permalink
注意更新permalink,要和同级目录相同的前缀;
例如:
/campus-wiki/prefixA/pageA/
/campus-wiki/prefixA/pageB/
徽章badge使用规范(可选)
在
navbar.ts
中进行配置
- 整理中的文档、服务使用
badge: {type: 'warning', text: '整理中'}
; - 维护中的文档、服务使用
badge: {type: 'danger', text: '维护中'}
- 已完成的文档、服务可使用
badge: {type: 'success', text: '概要'}
; - 即将上线的文档、服务使用
badge: {type: 'info', text: '即将上线'}
;
静态资源管理规范
这里是为了规范您的图片、视频、PDF、矢量图引用方法,Vuepress Plume 推荐你引用静态资源的方式如下(非必要):
#使用相对public的路径
[image](/src/yyyy-mm-dd_hh-min-sec.png)
静态资源类型、大小规范
- 图片文件:70% 分辨率 jpg 或 png 图片,放入
PGuide-Docs/.docs/.vuepress/public/src
中,图片命名方式参考截图工具设置 - 矢量图:.svg .eps文件,放入
PGuide-Docs/.docs/.vuepress/public/src
中,命名为英文即可
截图工具设置
- 下载 PixPin
前往 Pixpin官网下载并安装该软件
配置 PixPin
右键任务栏中的 PixPin 图标(没有的话看看上拉键),点击配置
点击开机后自动启动
转到WebStorm,找到src文件夹,右键open in -> explorer
进入src文件夹,找到上方地址栏,复制绝对地址
回到 PixPin,转到保存
- 设置保存图像质量 70
- 手动、快速保存路径删除
Pixpin_
前缀 - 更改文件夹,粘贴刚才复制的绝对地址
- 手动、快速保存路径删除
转到快捷键/动作
删除所有快捷键,添加新动作
截图设置为F1,删除其他的
添加新动作,动作名称选截图并快速保存,设置为F2
- 设置保存图像质量 70
对象存储
所有 PDF、.mp4视频 放在项导腾讯云对象存储上,如有此类文件,将其发送给 rand777,链接处留空,并留下以下格式的 TODO
今天天气多么好呀,于是我打开了高等数学 这里需要PDF文件
然后写上 TODO: 需要{文件名.pdf},并 ctrl
+ /
注释,在代码里看起来是这样的:
今天天气多么好呀,于是我打开了高等数学
[//]: # (TODO: 需要高等数学.pdf)
常见问题及解决方案
git推送 SSL ERROR
git配置本地代理,此处默认您的代理端口在本地且 http/https 端口号为7890
# 设置全局 HTTP 代理
git config --global http.proxy http://127.0.0.1:7890
# 设置全局 HTTPS 代理
git config --global https.proxy http://127.0.0.1:7890
依赖版本错误
每个rc版本的依赖包可能会有不同的版本要求,您可以尝试以下步骤:
- 找到冲突的依赖包
- 在终端中输入以下命令,强制安装指定版本的依赖包
pnpm add @<package-name/subpackage>@<version>
例如
pnpm add @vuepress/shiki-twoslash@2.0.0-rc.110
- 再次启动应用
pnpm run docs:dev
长期未更新安装不了包
可以尝试去缓存启动web应用
vuepress dev docs --clean-cache --clean-temp
先删除 docs/.vuepress/.temp
,docs/.vuepress/.cache
和 node_modules
文件夹,然后重新安装依赖
pnpm i