从零做一个开源项
开源项目包含哪些内容
- 源码
- 文档:如二次开发文档和用户使用文档
- 开发环境:指导二次开发者如何搭建和运行代码
- **允许他人贡献代码**,而不仅仅是阅读源码
- **问题管理**:用户提问、维护者答复、问题共享
- **问题列表和升级计划**:记录当前问题及解决、升级计划
其他配套设施
- 官网,如 wangEditor 官网
- 文档,可与官网整合
- 问答社区,wangEditor 使用 github issue
- 及时交流社区,如 QQ 群、微信群
注册账号
- 创建 github 仓库(协议选 MIT,勾选 add README.md)
- 示例仓库:
https://github.com/cxvh/is-visit-google.git
- 示例仓库:
- 注册 npmjs 账号
开发环境搭建
- 需安装 node 环境
规范版本号
- 打开 package.json,将版本号定义为
"version": "0.0.1"
- 版本号分三级:
- 一级:重构版本
- 二级:重大功能改进
- 三级:小升级或 bug 修复
- 0.x.x 为测试版,1.x.x 起为正式版
规范项目目录结构
建议提前规划好一级目录,例如:
- src - 源代码
- release - 发布结果
- test - 单元测试用例
- doc - 文档
- example - 示例
1 | npm init |
构建工具配置
安装依赖
1 | npm i babel-loader @babel/core @babel/preset-env babel-register jsxobj babel-preset-es2015 webpack webpack-cli --save-dev --registry=https://registry.npm.taobao.org |
配置 webpack
在项目根目录创建 webpack.config.js:
1 | const path = require('path'); |
配置 package.json 脚本
1 | { |
运行示例
在 example 目录下创建 test.html,引用 release 目录下的内容:
1 |
|
运行 npm run example
,浏览器访问即可。
规范 git 分支
建议至少存在 master 和 dev 两个分支。dev 为开发分支,master 为主分支。可根据需要增加 next、fix-bug 等分支,但遵循“用不到的就先不要规划”的原则。
完善 README.md
README.md 是开源项目的门面,建议包含:
- 产品简介(突出特点,差异化竞争)
- 产品安装和下载方式
- 快速使用(详细文档或外链)
- 交流提问区
- 关于作者(博客链接、收款二维码)
- 最后将所有内容提交到 github
提交代码流程
- 写代码:注意编码规范,建议使用 eslint 等工具
- 写文档 & 测试用例:文档和测试用例非常重要,是代码不可分割的一部分
文档目录示例
创建 SUMMARY.md:
1 | # Summary |
运行 gitbook init
自动生成文档结构,完善内容后运行 gitbook build
生成 html 文件,默认在 _book
文件夹。
更新 README.md
添加文档链接:
1 | [如何使用](./doc/use/README.md) [二次开发](./doc/dev/README.md) |
提交第一版代码
- 修改 .gitignore,添加
_book
,忽略打包文件 - 提交到 github master 分支
- 创建 tag 并推送:
1 | git tag -a 'v0.0.1' -m 'first commit' |
- 发布到 npm:
1 | npm adduser |
如遇 403 错误,检查包名是否与 npm 上已有项目重名,必要时更改 package.json 中的 name 字段。
升级与维护流程
- 开发阶段:在 dev 分支开发,修改版本号,完善代码、文档、测试用例,自测后提交到远程
- 发布阶段:确认版本号,将 dev 合并到 master,创建 tag 并推送,发布到 npm
合并 PR
- 通过 pulls 页面 查看 PR
- 需要合并的直接 merge,不合适的留言说明后关闭
创建与生成官网
- 创建名为 fast-cache.github.io 的仓库,上传 index.html
- 访问 fast-cache.github.io 即可看到官网内容
- 可将 gitbook 生成的 html 拷贝到该仓库,正式官网即上线
- 记得在 README.md 中添加官网地址
宣传与持续迭代
宣传方式
- 写博客:围绕产品功能写技术干货和产品介绍,选择主博客站点和三大流量平台,注明原文链接和产权
- 回答相关问题:在知乎、sf.gg、stackoverflow 等平台积极参与,专业且详实地解答,顺便推广产品
- 口碑宣传:明确产品定位,及时回复问题,定期升级维护
持续迭代建议
- 统一问题收集区(如 github issue)
- 定期答复和升级,合理安排时间
- 学会拒绝不合理需求,聚焦产品定位
- 持之以恒,坚持长期维护
总结
- 做开源的意义
- 开源项目不仅仅是源码
- 小而精,避免大而全
- 持续宣传与迭代
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BARAN的小站🔥🔥🔥!