小周末小技巧:通过 GitHub Actions 每日 JavaScript 引语,无需后端。
发布: (2026年3月2日 GMT+8 13:25)
5 分钟阅读
原文: Dev.to
Source: Dev.to
小周末黑客:通过 GitHub Actions 每日获取 JavaScript 名言 —— 无需后端
TL;DR
用 GitHub Actions 每天自动把一条 JavaScript 名言写入仓库(或 Gist),不需要自己搭建服务器。只需要几行 JavaScript 和一个工作流文件。
🎯 目标
- 每天在仓库根目录生成(或更新)
quote-of-the-day.md,内容是一条随机的 JavaScript 名言。 - 通过 GitHub Actions 自动运行,无需任何自托管服务器。
- 代码保持极简,便于在周末快速实现。
📂 项目结构
.
├─ .github
│ └─ workflows
│ └─ daily-quote.yml # GitHub Actions 工作流
├─ quotes.json # 名言库(JSON 数组)
└─ README.md
1️⃣ 准备名言库
在仓库根目录创建 quotes.json,内容类似:
[
"JavaScript 是唯一一种可以在浏览器里运行的语言。",
"在 JavaScript 中,'null' 与 'undefined' 是两个不同的概念。",
"闭包是 JavaScript 中最强大的特性之一。",
"不要在全局作用域里污染变量。",
"使用 '===` 而不是 `==` 来避免隐式类型转换。"
]
提示:可以自行添加更多名言,只要保持 JSON 数组格式即可。
2️⃣ 编写获取随机名言的脚本
在仓库根目录新建 generate-quote.js(代码块不翻译):
const fs = require('fs');
const path = require('path');
// 读取 quotes.json
const quotesPath = path.join(__dirname, 'quotes.json');
const quotes = JSON.parse(fs.readFileSync(quotesPath, 'utf8'));
// 随机挑选一条
const randomQuote = quotes[Math.floor(Math.random() * quotes.length)];
// 生成 markdown 内容
const content = `# 今日 JavaScript 名言\n\n> ${randomQuote}\n`;
fs.writeFileSync('quote-of-the-day.md', content);
console.log('✅ quote-of-the-day.md 已生成');
3️⃣ 配置 GitHub Actions 工作流
在 .github/workflows/daily-quote.yml 中添加以下内容(代码块不翻译):
name: Daily JavaScript Quote
on:
schedule:
# 每天 UTC 00:00 运行(相当于北京时间 08:00)
- cron: '0 0 * * *'
workflow_dispatch: # 手动触发
jobs:
generate-quote:
runs-on: ubuntu-latest
steps:
# 1️⃣ 检出仓库代码
- name: Checkout repository
uses: actions/checkout@v3
# 2️⃣ 设置 Node.js 环境
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
# 3️⃣ 安装依赖(如果有 package.json)
- name: Install dependencies
run: npm ci
# 4️⃣ 运行生成脚本
- name: Generate quote
run: node generate-quote.js
# 5️⃣ 提交并推送更改
- name: Commit and push quote
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add quote-of-the-day.md
git commit -m "📚 Update daily JavaScript quote"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
关键点说明
- schedule:使用 cron 表达式让工作流在每天的固定时间运行。这里使用 UTC 0 点,即北京时间早上 8 点。
- workflow_dispatch:允许手动触发,便于调试。
- actions/checkout@v3:把仓库内容检出到 runner。
- actions/setup-node@v3:安装指定版本的 Node.js。
- npm ci:如果项目里有
package.json,使用npm ci进行快速、可重复的依赖安装。若没有可以省略此步骤。 - git commit:使用 GitHub 自动提供的
GITHUB_TOKEN完成提交和推送,无需额外的 PAT(Personal Access Token)。
4️⃣ 验证结果
提交上述文件后,GitHub 会在 Actions 选项卡中显示工作流运行状态。运行成功后,你会在仓库根目录看到 quote-of-the-day.md,内容类似:
# 今日 JavaScript 名言
> 使用 '===` 而不是 `==` 来避免隐式类型转换。
每次工作流触发时,这个文件都会被新的随机名言覆盖。
📦 可选扩展
| 扩展方向 | 实现思路 |
|---|---|
| 发布到 Gist | 在工作流中使用 actions/create-gist 或直接调用 GitHub API,把生成的 markdown 内容写入个人 Gist。 |
| 发送到 Slack / Discord | 添加一步调用对应的 webhook,把名言推送到团队聊天渠道。 |
| 多语言支持 | 在 quotes.json 中加入不同语言的数组,使用环境变量决定输出语言。 |
| 自定义排版 | 使用模板引擎(如 Mustache)生成更丰富的 markdown 或 HTML。 |
✅ 小结
- 只用了 3 个文件(
quotes.json、generate-quote.js、工作流 yaml)就实现了每日自动更新的功能。 - 完全依赖 GitHub Actions,无需自行维护服务器或 cron 任务。
- 代码简洁、易于扩展,适合作为周末小实验或团队内部的每日灵感推送。
祝你每天都有新的 JavaScript 灵感! 🚀