mavonEditor代码贡献指南:参与开源项目的步骤与规范
一、贡献前准备
1.1 开发环境搭建
要参与mavonEditor的代码贡献,首先需要搭建完整的开发环境。以下是详细步骤:
# 1. 克隆代码仓库
git clone https://gitcode.com/gh_mirrors/ma/mavonEditor.git
cd mavonEditor
# 2. 安装依赖包
npm install
# 3. 启动开发服务器
npm run dev
开发服务器启动后,访问http://localhost:8080即可看到项目的开发示例页面。
1.2 开发工具配置
为了确保代码质量和开发效率,建议使用以下开发工具配置:
- 代码编辑器:VS Code
- 必要插件:
- ESLint
- Vetur (Vue.js开发必备)
- Prettier (代码格式化)
项目已配置ESLint规则,可通过以下命令进行代码检查和自动修复:
# 检查代码规范
npm run lint
# 自动修复部分代码问题
npm run lint:fix
二、项目架构解析
2.1 核心目录结构
mavonEditor的项目结构清晰,主要目录功能如下:
src/
├── components/ # 工具栏组件
├── dev/ # 开发环境相关
│ ├── app.vue # 开发示例入口
│ └── assets/ # 开发资源
├── index.js # 入口文件
├── lib/ # 核心库
│ ├── config.js # 配置文件
│ ├── core/ # 核心功能模块
│ ├── css/ # 样式文件
│ ├── font/ # 字体资源
│ ├── lang/ # 多语言支持
│ └── mixins/ # 混入功能
└── mavon-editor.vue # 主组件
2.2 核心功能模块
mavonEditor的核心功能模块位于src/lib/core目录下,主要包括:
| 文件名称 | 功能描述 |
|---|---|
| markdown.js | Markdown解析与渲染核心 |
| highlight.js | 代码高亮处理 |
| keydown-listen.js | 键盘事件监听与处理 |
| sanitizer.js | HTML净化处理,防止XSS攻击 |
| extra-function.js | 额外功能函数 |
| to-markdown.js | HTML转Markdown功能 |
三、贡献代码流程
3.1 分支管理策略
mavonEditor采用以下分支管理策略:
- main:主分支,保持稳定,仅用于发布版本
- dev:开发分支,新功能开发完成后合并到此
- **feature/*:功能分支,新功能开发使用
- **bugfix/*:修复分支,问题修复使用
贡献代码时,请基于dev分支创建新的功能分支或修复分支。
3.2 代码提交规范
提交代码时,请遵循以下规范:
-
提交信息格式:
[类型]: 简短描述- 类型包括:feat(新功能)、fix(修复)、docs(文档)、style(格式)、refactor(重构)等
- 示例:
[feat]: 添加表格居中对齐功能
-
每次提交保持最小化:每个提交应专注于单一功能或修复,便于代码审查和回溯
3.3 Pull Request流程
完成代码开发后,通过以下步骤提交PR:
- 同步最新代码:确保你的分支与远程仓库保持同步
- 运行测试:确保所有测试通过
npm run test - 提交PR:PR标题格式与提交信息一致,描述需说明:
- 实现的功能或修复的问题
- 实现思路
- 测试方法
四、功能开发指南
4.1 添加新工具栏按钮
要添加新的工具栏按钮,需按照以下步骤进行:
- 修改工具栏组件:在
src/components/目录下的工具栏组件中添加按钮 - 添加按钮点击事件:在
src/lib/toolbar_left_click.js或toolbar_right_click.js中添加对应的处理函数 - 更新多语言文件:在
src/lib/lang/目录下的各语言JSON文件中添加按钮文本
例如,添加一个"清除格式"按钮的代码示例:
// 在toolbar_left_click.js中添加
case 'clear-format':
this.$refs.textarea.clearFormat();
break;
4.2 实现新语法支持
mavonEditor基于markdown-it实现Markdown解析,要添加新的语法支持:
-
安装对应的markdown-it插件:
npm install markdown-it-plugin-name --save -
在
src/lib/core/markdown.js中配置插件:import plugin from 'markdown-it-plugin-name'; // 在markdownIt配置中添加 md.use(plugin, options); -
添加相应的工具栏按钮和处理函数(参考4.1)
五、测试与文档
5.1 单元测试编写
项目使用Jest进行单元测试,测试文件位于tests/unit/目录下。添加新功能后,请编写相应的单元测试:
# 运行所有测试
npm run test
# 运行测试并生成覆盖率报告
npm run test:coverage
5.2 文档更新
添加新功能或修改API后,需同步更新以下文档:
- README.md:更新基本使用说明
- doc/cn/use.md:更新详细使用文档
- API文档:确保所有公共API都有清晰注释
六、贡献规范
6.1 代码风格规范
- 使用2个空格缩进,不使用Tab
- 变量命名:
- JavaScript:采用camelCase(驼峰式)
- CSS/SCSS:采用kebab-case(短横线连接式)
- 组件命名:采用PascalCase(帕斯卡式),如
MdToolbarLeft.vue
6.2 提交信息规范
提交信息应遵循以下格式:
[类型]: 简短描述(不超过50字符)
详细描述,解释本次提交的目的和实现方式
相关Issue: #123
类型包括:
- feat: 新功能
- fix: 问题修复
- docs: 文档更新
- style: 代码格式调整,不影响代码功能
- refactor: 代码重构
- test: 添加或修改测试代码
- chore: 构建过程或辅助工具变动
6.3 代码审查要点
提交PR后,代码将经过审查,主要关注以下方面:
- 代码是否符合项目风格规范
- 是否添加必要的测试
- 是否更新相关文档
- 功能实现是否合理
- 是否存在性能问题
七、常见问题解决
7.1 本地开发问题
Q: 启动开发服务器时报错怎么办?
A: 尝试删除node_modules目录和package-lock.json文件,重新执行npm install
Q: 开发时修改代码没有热更新?
A: 检查是否有语法错误,修复后热更新会自动恢复
7.2 贡献流程问题
Q: 如何同步上游仓库的最新代码?
A: 添加上游仓库并同步:
# 添加上游仓库
git remote add upstream https://gitcode.com/gh_mirrors/ma/mavonEditor.git
# 同步最新代码
git fetch upstream
git merge upstream/dev
Q: PR被要求修改怎么办?
A: 在原分支上进行修改并提交,PR会自动更新
八、贡献者社区
8.1 交流渠道
- Issue跟踪:通过项目的Issues功能提交问题和建议
- 讨论区:可在项目的Discussion板块参与讨论
8.2 贡献者行为准则
- 尊重他人,友好交流
- 聚焦问题,理性讨论
- 帮助新人,共同进步
- 遵守开源协议和社区规范
九、贡献示例:添加自定义工具栏按钮
以下是添加一个自定义工具栏按钮的完整示例:
- 修改工具栏组件(
src/components/md-toolbar-left.vue):
<button
type="button"
@click="click('clear-format')"
class="op-icon fa fa-eraser"
aria-hidden="true"
:title="$t('words.clearFormat')"
>
</button>
- 添加点击事件处理(
src/lib/toolbar_left_click.js):
case 'clear-format':
// 清除选中区域格式
this.$refs.textarea.clearFormat();
break;
- 添加多语言支持(
src/lib/lang/zh-CN/words_zh-CN.json):
{
"clearFormat": "清除格式"
}
- 添加单元测试(
tests/unit/mavon-editor.spec.js):
test('clear format button works', () => {
// 测试代码
});
- 更新文档:在使用文档中添加新按钮的说明
十、总结与展望
mavonEditor作为一个活跃的开源项目,欢迎各种形式的贡献。无论是功能改进、问题修复,还是文档完善,都能帮助项目不断进步。
通过遵循本指南,你可以顺利地参与到mavonEditor的开发中,为这个优秀的Markdown编辑器贡献自己的力量。我们期待你的贡献,让mavonEditor变得更加完善!
贡献流程回顾:
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



