查看原文
其他

如何给Knife4j贡献文档和代码

八一菜刀 Knife4j 2023-08-29

作为一个开源项目,Knife4j 的成长离不开社区贡献者的支持和参与。我们非常欢迎广大社区用户为 Knife4j 贡献代码、文档或改进网站,在此过程中,我们愿意为您提供必要的支持。

如何贡献文档

我们欢迎您参与Knife4j项目。有很多贡献方式,包括回答有关issues的问题,编写新代码,改进现有代码,协助编写文档,开发示例或教程,报告错误或仅提出建议。有关更多信息,请参见我们的贡献文档。

如何贡献文档

目前Knife4j的新版本文档开发者可以直接通过编写Markdown文档的方式执行参与文档贡献。你的文档贡献能帮助到每一个使用Knife4j的人,社区的壮大离不开每个开发者的贡献。

Knife4j的文档通过Docusaurus进行编写,文档源码位于Knife4j项目dev分支下的knife4j-doc目录

主要步骤:

1、开发者对仓库进行fork操作,然后pull到本地

2、本地安装Docusaurus ,具体可以参考官方文档

需要安装Node环境,Node版本必须符合Docusaurus要求

3、安装本地依赖npm install

4、运行Knife4j-doc文档查看效果npm run start

文档目录说明:

目前Knife4j-doc文档中主要包含4个顶级目录:

目录名称说明
middleware中间件
middleware-sources中间件
features增强属性
action实战指南,欢迎开发者贡献所有关于Knife4j实战部分的文章
oasOAS规范,OAS规范介绍,可以包含不同语言端的注解或说明
changelogKnife4j详细更新日志
faqFAQ问题列表

每个不同的目录中,开发者只需要在该目录创建markdown文档即可,一篇markdown文档即代表一篇文档说明,最终在docusaurus.config.js中添加该markdown文档到相应的目录显示即可

如果有更多的实战文档,开发者可以现在action目录创建好与之对应的Markdown文档,然后在这里自行添加目录

需要注意的是,如果篇幅中有图片,且不是网络图片,贡献者可以将图片放在static/images的目录中.

文档写完后,就可以在Knife4j的Gitee仓库中向作者发起PR请求了,需要将PR请求提交到dev分支!!!

社区贡献

  • 点亮Star,照亮Knife4j开源之路!!
    • https://gitee.com/xiaoym/knife4j
    • https://github.com/xiaoymin/knife4j
  • 发表你的看法:Knife4j论坛
  • 认领开发任务:Issues
  • 完善Knife4j文档
  • 在你自己的博客、微博、微信公众号、vlog 等自媒体分享有关 Knife4j 的一切。也非常欢迎将实战内容通过PR进行贡献合并在Knife4j的官方文档进行展示。
  • 把Knife4j分享给更多的人

开源贡献

Knife4j仓库结构说明

  • knife4j-desktop:Knife4j的独立中间件,基于Java编写,可以独立运行渲染OpenAPI规范文件
  • knife4j-doc: 官网文档,基于Docusaurus进行编写
  • knife4j-vue: 前端源码,基于Vue2框架编写
  • knife4j: Java端代码,包括所有公开使用的starter组件封装

指导方针

  • 在开始进行功能或者修复Bug之前,事先请在Github、Gitee平台上搜索与之相关的功能是否已经实现,或着也可以通过Github、Gitee平台的issue与我们取得联系。以确保该任务没有其他人在处理,避免重复操作。
  • 所有功能可通过Github或者Gitee的issues进行沟通讨论,避免浪费大家的时间。
  • 如果是重大功能更新,建议你在编码开发的同时,将该功能的设计、思想、实现以及使用说明通过文档进行输出。最好是合并在Knife4j的官方文档上
  • 提交PR时,需要将PR请求提交到dev分支!!!

调试代码

目前knife4j-vue是前端代码,基于Vue2框架编写编写

开发者如果想贡献代码或者自己改造,得启动此项目进行调试

1、环境准备

首先,开发者本地需要安装Node环境,目前该版本的Node依赖比较低,作者本地使用的版本是v15.14.0,可以通过nvm工具切换安装不同的node版本,高版本的Node目前可能会存在问题,保持一致即可

2、安装依赖

执行命令

npm install 

3、后端接口准备

目前Knife4j组件还是以Java生态为主,所以在调试获取OpenAPI数据源时,是根据解析框架做兼容适配,主要是两个框架:

  • springfox:提供Swagger2规范的解析,在Spring Boot框架生态下提供服务,参考demo工程:knife4j-spring-boot27-demo
  • springdoc:提供OpenAPI3规范的解析,在Spring Boot框架生态下提供服务,参考demo工程:knife4j-springdoc-openapi-demo

而Knife4j-vue前端代码目前还是比较笨拙的方式,主要体现在knife4j-vue/src/layouts/BasicLayout.vue文件中

create()方法时会存在区别

 created() {
    // 调试springdoc框架时,使用该方法,注释下面的this.initKnife4jSpringUi()方法
    this.initSpringDocOpenApi();
    // 调试springfox框架时,使用该方法,注释上面的 this.initSpringDocOpenApi()方法
    //this.initKnife4jSpringUi();
    this.initI18n();
  },

这种方法在打包构建时,也同样如此

4、服务端代理端口

knife4j-vue/vue.config.js配置文件中,修改proxy节点下的配置

在上面springfox和springdoc两个demo工程下,服务启动后,修改为相应的端口即可

devServer: {
    watchOptions: {
      ignored: /node_modules/
    },
    proxy: {
      "/": {
        // 代理服务端端口
        target: 'http://localhost:8990/',
        ws: true,
        changeOrigin: true
      }
    }
  },

本文原文参考

  • 文档贡献:https://doc.xiaominfo.com/docs/community/joinus
  • 代码贡献:https://doc.xiaominfo.com/docs/community/contributing

点击阅读原文即可查看文中的链接


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存