一个基于 Astro 构建的现代化个人技术博客,专注于分享技术文章和开发经验。
- 🚀 现代化技术栈: Astro + TypeScript + Tailwind CSS
- 📱 响应式设计: 完美适配桌面端和移动端
- 🌙 暗色模式: 自动适配系统主题偏好
- ⚡ 极速加载: 静态生成,SEO 友好
- 🎨 现代 UI: 精心设计的用户界面和交互效果
- 📝 内容管理: 基于 Markdown 的内容集合
- 🔍 搜索功能: 快速查找文章内容
- 📊 统计分析: 文章分类和标签管理
- 💬 技术问答: 基于 Giscus 的问答平台
- 🛠️ 在线工具: JSON 格式化等实用工具
- 框架: Astro 4.x
- 语言: TypeScript
- 样式: Tailwind CSS + 自定义 CSS
- 内容: Markdown + Astro Content Collections
- 部署: GitHub Pages + GitHub Actions
- 包管理: pnpm
- Node.js: v20.18.3
myblog/
├── src/
│ ├── content/ # 内容集合
│ │ ├── config.ts # 内容配置
│ │ └── posts/ # 博客文章
│ ├── layouts/ # 页面布局
│ ├── pages/ # 页面路由
│ │ └── tools/ # 在线工具页面
│ ├── styles/ # 全局样式
│ └── components/ # 组件
├── public/ # 静态资源
├── .github/workflows/ # GitHub Actions
└── astro.config.mjs # Astro 配置
- Node.js >= 20.18.3
- pnpm (推荐) 或 npm
# 使用 pnpm (推荐)
pnpm install
# 或使用 npm
npm install# 启动开发服务器
pnpm dev
# 或
npm run dev访问 http://localhost:4321 查看博客
# 构建静态文件
pnpm build
# 预览构建结果
pnpm preview- 在
src/content/posts/目录下创建 Markdown 文件 - 添加 frontmatter 元数据:
---
title: "文章标题"
description: "文章描述"
pubDate: 2024-01-01
tags: ["标签1", "标签2"]
categories: ["分类1"]
draft: false
---
文章内容...title: 文章标题description: 文章描述(可选)pubDate: 发布日期updatedDate: 更新日期(可选)tags: 标签数组categories: 分类数组draft: 是否为草稿(默认 false)
在 tailwind.config.mjs 中修改主题颜色:
colors: {
primary: {
50: '#f0f9ff',
500: '#3b82f6',
600: '#2563eb',
// ... 更多颜色
}
}在 src/styles/global.css 中添加自定义样式。
- 基于 Giscus 评论系统构建
- 支持 GitHub 账号登录
- 问题分类和标签管理
- Markdown 格式支持
- 代码高亮和表情反应
- 访问
/tools/qa页面 - 使用 GitHub 账号登录
- 发布技术问题或回答他人问题
- 使用标签分类问题(如 #JavaScript, #Vue 等)
详细配置步骤请参考 GISCUS_SETUP.md
- 在线 JSON 格式化、压缩和验证
- 支持语法高亮和错误提示
- 自动修复常见格式问题
- 支持复制和下载功能
可以在 src/pages/tools/ 目录下添加更多在线工具。
- 推送代码到 GitHub 仓库
- GitHub Actions 会自动构建和部署
- 访问
https://yourusername.github.io/repository-name
- Vercel: 连接 GitHub 仓库即可自动部署
- Netlify: 拖拽
dist文件夹或连接 Git 仓库 - Cloudflare Pages: 连接 GitHub 仓库
MIT License
欢迎提交 Issue 和 Pull Request!
- 博客: https://protagonistss.github.io
- GitHub: @Protagonistss
不迁怒,不二过。 - 分享技术,记录成长