#4关于 GG
GG: Gatsby + GitHub
背景
我想要一个可以实时编辑文章的在线 IDE,支持分类,标签,多编程语言,评论互动及问答模式。发文也不需要受到平台的审核及约束,综合考虑下来决定基于 GitHub 来打造一个社区。同样的事情,我希望可以只用做一次,然后可以无限复用这种能力。所以我选择将它开源,并且完全基于 GitHub 所提供的能力来实现。
技术栈
- Gatsby.js - 一个基于 React 的免费、开源框架,用于帮助开发者构建运行速度极快的网站和应用程序
- lencx/rgd - 一个命令行工具,可以将 GitHub Discussions API 生成 RSS 和 JSON 文件
- GitHub Discussions API - 通过接口查询数据
- GitHub Pages - 网站部署
- GitHub Actions workflow - 定时任务,自动构建,及部署等
- PWA - 渐进式 Web 应用程序
- 响应式 - 同时支持桌面端,及移动端
工作原理
lencx/rgd
从 Discussions API
中获取数据生成的 JSON
文件,会通过 Gatsby.js
的 gatsby-transformer-json
插件解析生成 GraphQL
数据作为网站数据源,用来渲染页面。GitHub Actions
每天会定时跑任务,从 GitHub Discussions
获取最新数据变更,重新对网站进行构建,并将其推送到 GitHub Pages
。
部署
这个项目推荐的方式是配合 GitHub Actions
每天定时同步 Discussions 中的数据,将其构建后推送到 GitHub Pages
。但是您也可以选择部署到其他平台。需要进行如下步骤:
yarn deploy
将生成的 public
目录部署到其平台。