This branch is 3 commits behind ParadigmEducation/snowflake-notes:main
2025-11-27 17:12:58 +08:00
2025-11-27 17:11:42 +08:00

内部学习博客(Astro + TypeScript

基于 Astro 构建的内部学习博客。目标:严格 TypeScript、统一格式化、内容可扩展(不仅 Markdown/MDX),图片优先使用外部 OSS。

快速开始

  • 要求:Node >= 20,包管理器使用 pnpm
  • 安装依赖:pnpm install
  • 启动开发:pnpm dev

常用脚本:

  • 构建:pnpm build ;预览:pnpm preview
  • 代码检查:pnpm lint ;类型检查:pnpm typecheck
  • 格式化:pnpm format

内容与结构

  • 文章与集合:src/content/(示例:src/content/posts/hello-world.mdx
  • 页面与布局:src/pages/src/layouts/
  • 通用组件:src/components/(如 Img.astro 支持外部图床)
  • 内容扩展抽象:src/lib/content/(为未来 Typst 等格式预留)
  • 标签规范:根目录 tags.config.yaml(建议统一文章标签使用)
  • 全局样式:src/styles/theme.css, src/styles/prose.css(支持浅/深色与容器宽度等变量)

配置与类型

  • PUBLIC_MEDIA_BASE_URL:外部图床前缀(避免图片入库)
  • PUBLIC_SITE_URL:站点地址(可选,用于 canonical 等)
  • 修改内容集合(src/content/config.ts)后,需在本机运行 pnpm astro syncNode >= 18.20.8,建议 >= 20),以生成 .astro/types.d.ts,否则类型可能退化为 any。
  • 主题:PUBLIC_THEME(可选:light/dark/system,默认 system

约定

  • 严格 TypeScript:禁止 any,导出函数需显式返回类型
  • 统一格式化:Prettier(含 Astro/Markdown/MDX
  • 图片默认不入库,建议走外部 OSS

更多细节与约定见 AGENTS.md

S
Description
No description provided
Readme 127 KiB
Languages
Astro 40.6%
CSS 20.3%
TypeScript 19.3%
JavaScript 17.3%
MDX 2.5%