#6关于 GG

shenweiyanshenweiyan2023/11/22

Via:lencx#4

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/rgdDiscussions API 中获取数据生成的 JSON 文件,会通过 Gatsby.jsgatsby-transformer-json 插件解析生成 GraphQL 数据作为网站数据源,用来渲染页面。GitHub Actions 每天会定时跑任务,从 GitHub Discussions 获取最新数据变更,重新对网站进行构建,并将其推送到 GitHub Pages

部署

这个项目推荐的方式是配合 GitHub Actions 每天定时同步 Discussions 中的数据,将其构建后推送到 GitHub Pages。但是您也可以选择部署到其他平台。需要进行如下步骤:

yarn deploy

将生成的 public 目录部署到其平台。