开源项目包含哪些内容

其他配套设施

  • 官网,如 wangEditor 官网
  • 文档,可与官网整合
  • 问答社区,wangEditor 使用 github issue
  • 及时交流社区,如 QQ 群、微信群

注册账号

  1. 创建 github 仓库(协议选 MIT,勾选 add README.md)
    • 示例仓库:https://github.com/cxvh/is-visit-google.git
  2. 注册 npmjs 账号

开发环境搭建

  • 需安装 node 环境

规范版本号

  • 打开 package.json,将版本号定义为 "version": "0.0.1"
  • 版本号分三级:
    • 一级:重构版本
    • 二级:重大功能改进
    • 三级:小升级或 bug 修复
  • 0.x.x 为测试版,1.x.x 起为正式版

规范项目目录结构

建议提前规划好一级目录,例如:

  • src - 源代码
  • release - 发布结果
  • test - 单元测试用例
  • doc - 文档
  • example - 示例
1
2
npm init
mkdir src release test doc example

构建工具配置

安装依赖

1
2
3
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
npm i http-server -g # mac 用户加 sudo
npm i gitbook-cli -g # mac 用户加 sudo

配置 webpack

在项目根目录创建 webpack.config.js:

1
2
3
4
5
6
7
8
9
const path = require('path');
module.exports = {
entry: './src/index.js',
mode: 'development',
output: {
filename: '[name]_bundle.js',
path: path.join(__dirname, 'release'),
}
}

配置 package.json 脚本

1
2
3
4
5
6
7
{
"scripts": {
"start": "http-server -p 3000",
"build": "webpack --config webpack.config.js",
"test": "echo \"Error: no test specified\" && exit 1"
}
}

运行示例

在 example 目录下创建 test.html,引用 release 目录下的内容:

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>example</title>
</head>
<body>
<p>example</p>
<script src="../release/bundle.js"></script>
</body>
</html>

运行 npm run example,浏览器访问即可。

规范 git 分支

建议至少存在 master 和 dev 两个分支。dev 为开发分支,master 为主分支。可根据需要增加 next、fix-bug 等分支,但遵循“用不到的就先不要规划”的原则。

完善 README.md

README.md 是开源项目的门面,建议包含:

  • 产品简介(突出特点,差异化竞争)
  • 产品安装和下载方式
  • 快速使用(详细文档或外链)
  • 交流提问区
  • 关于作者(博客链接、收款二维码)
  • 最后将所有内容提交到 github

提交代码流程

  1. 写代码:注意编码规范,建议使用 eslint 等工具
  2. 写文档 & 测试用例:文档和测试用例非常重要,是代码不可分割的一部分

文档目录示例

创建 SUMMARY.md:

1
2
3
4
5
6
7
8
9
# Summary

- [项目介绍](README.md)
- [使用文档](doc/use/README.md)
- [使用 1](doc/use/use1.md)
- [使用 2](doc/use/use2.md)
- [二次开发](doc/dev/README.md)
- [开发 1](doc/dev/dev1.md)
- [开发 2](doc/dev/dev2.md)

运行 gitbook init 自动生成文档结构,完善内容后运行 gitbook build 生成 html 文件,默认在 _book 文件夹。

更新 README.md

添加文档链接:

1
[如何使用](./doc/use/README.md) [二次开发](./doc/dev/README.md)

提交第一版代码

  • 修改 .gitignore,添加 _book,忽略打包文件
  • 提交到 github master 分支
  • 创建 tag 并推送:
1
2
git tag -a 'v0.0.1' -m 'first commit'
git push origin v0.0.1
  • 发布到 npm:
1
2
3
npm adduser
npm login
npm publish .

如遇 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)
  • 定期答复和升级,合理安排时间
  • 学会拒绝不合理需求,聚焦产品定位
  • 持之以恒,坚持长期维护

总结

  • 做开源的意义
  • 开源项目不仅仅是源码
  • 小而精,避免大而全
  • 持续宣传与迭代

参考