このプロジェクトについて
nfuwariは、AstroのFuwariテーマで構築され、GitHub PagesにデプロイされているLucius7's Blog (blog.lucius7.cn) のソースリポジトリです。
中国語と英語のコンテンツは分離して管理されています。記事は src/content/posts/zh/ および src/content/posts/en/ に配置され、それぞれに独自のリスト、カテゴリ・タグ数、記事ナビゲーション、RSSフィード、検索インデックスを備えており、ルートURLは /zh/ にリダイレクトされます。インターフェース文字列は src/i18n/ に、言語別のAboutページは src/content/spec/ に配置されています。翻訳は同一の相対パスまたは translationKey で紐付けられ、言語スイッチャーで対応するページがない場合はターゲット言語のホームページにフォールバックします。
執筆はMarkdownベースです。ジェネレータースクリプト (pnpm new-post zh/name または pnpm new-post en/name) を使用して、lang: zh_CN または lang: en を含むフロントマターのデフォルト設定を持つ下書きを作成できます。記事はデフォルトで draft: true となり、本番ビルドでは除外されるため、ローカル開発環境でのみ表示されます。フロントマターのフィールドとバリデーションは src/content/config.ts で定義されています。数式は remark-math と rehype-katex を通じてサポートされ、スタイルとフォントはサイトに同梱されています。
読者はライト/ダークテーマ、カテゴリ、タグ、Pagefind検索、RSSおよびサイトマップを利用できます。サイトのアイデンティティ、テーマの色相、プロフィール、ナビゲーション、SNSリンク、記事のライセンスは src/config.ts で設定し、バナー画像、アバター(Tencent QQアバターエンドポイント)、サイトアイコン、フッターの登録リンクは、同ファイルまたは public/ および src/assets/ を通じて設定可能です。
著者のOJFlare公開APIからデータを取得する2つのオプションダッシュボード機能があります。1つは最新のCodeforces/AtCoderのAC提出3件を表示するサイドバーウィジェット、もう1つはAboutページに表示されるAC貢献カレンダーです。カレンダーは problemId で重複を排除し、Asia/Taipei (UTC+8) の日付を使用し、年およびプラットフォームによるフィルタリングが可能です。両機能は単一のポーリングループを共有し、ページ表示中に5分ごとに更新されます。更新に失敗した場合は以前のレコードを保持し、設定で無効化することも可能です。なお、ブログのビルドはAPIの到達性に依存しません。
ツールチェーンには、下書きを含むプレビュー用の pnpm dev、pnpm lint、Astro/Svelte/TypeScriptのチェックを行う pnpm check、Pagefindインデックスを生成する pnpm build、およびビルド済みサイトを確認する pnpm preview が含まれます。テストスクリプトでは、ライブサービスに接続せずに言語ルーティング、MacFlareアクティビティウィジェット、OJFlareパースの検証を行います。GitHub Actionsは、mainブランチへの更新時にスタイルチェック、型チェック、ビルド、デプロイを実行し、GitHub Pagesに公開します。カスタムドメインはAlibaba Cloud ESA経由で提供され、CNAMEファイルに記録されています。DependabotがnpmとGitHub Actionsを毎週チェックします。執筆、二言語コンテンツ、LaTeX、デプロイ、依存関係レビューのガイドは docs/ にあり、プロジェクトコードはMITライセンスを保持し、アップストリームへの帰属を明記しています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.