更新履歴はサイト紹介ページをご覧ください
サイト内で確認 https://jaymushui.github.io/about/site#site-history-changelog
- 🎨 静的ブログフレームワーク:Valaxy v0.23.4
- 🎯 ブログテーマ:Yun v0.23.4
現在のフレームワークに対するカスタマイズについてはこのセクション以降の章をご覧ください
- 🖖 フロントエンドフレームワーク:Vue 3
- 🛣️ ルーティング管理:Vue Router
- 🌍 国際化:Vue I18n
- 📝 Markdown解析:Markdown-it
- 📐 数式レンダリング:KaTeX
- 🎨 カラー処理:TinyColor
- 📊 アクセス解析:Google Analytics
- 🚀 現在使用中:Github Pages:https://jaymushui.github.io
*未対応:Vercel、Netlifyなど
- 🖼️ Telegraph + Cloudflare Pages:静的リソースCDNホスティング🔗
- 🔗 関連プロジェクト:
- https://mushui.pages.dev/(ソーシャルプロフィール)[非オープンソース]
- 🤫
Valaxyとこのテーマは以下のfrontmatterフィールドをサポートしており、すべてのフィールドにソースコード参照または公式の規約があり、追跡と保守が容易です:
title:記事タイトル(Valaxy規約、すべてのコンポーネントでサポート)icon:タイトル前のアイコン(YunPostCard.vue:27, Valaxy規約)description:記事の説明(YunPostMeta.vue:22)author:著者(YunPostMeta.vue:23)date:公開時間(YunPostMeta.vue:20, Valaxy規約)updated:更新時間(YunPostMeta.vue:21, Valaxy規約)path:記事パス(Valaxy規約)❓abbrlink:永久リンク(Valaxy規約)❓
toc:目次を表示するかどうか(Valaxy規約)aside:右サイドバーを表示するかどうか(Valaxy規約)markdownClass:カスタムMarkdownスタイル(Valaxy規約)❓pageTitleClass:ページタイトルスタイル(Valaxy規約)❓postTitleClass:記事リストでのカスタムタイトルスタイル(YunPostCard.vue:40)
categories:カテゴリー(YunPostCard.vue:115, Valaxy規約)tags:タグ(YunPostCard.vue:117, Valaxy規約)
excerpt:カスタム抜粋(YunPostCard.vue:97, Valaxy規約)excerpt_type:抜粋タイプ(YunPostCard.vue:96, Valaxy規約)cover:カバー画像(YunPostCard.vue:73, Valaxy規約)
nav:記事ナビゲーションを表示するかどうか(Valaxy規約)top:トップ優先度(YunPostMeta.vue:30, Valaxy規約)end:完了したかどうか(Valaxy規約)
draft:下書きかどうか(Valaxy規約)hide:非表示かどうか(Valaxy規約)comment:コメントを表示するかどうか(Valaxy規約)time_warning:更新時間警告(Valaxy規約)❗ [グローバルで無効化]
wordCount:文字数(YunPostMeta.vue:18, 自動生成)readingTime:読書時間(YunPostMeta.vue:19, 自動生成)
type:カードタイプ(YunPostCard.vue:26, Valaxy規約)url:記事URLを上書き、直接ジャンプ(YunPostCard.vue:103, Valaxy規約)
image:Schema.org画像オブジェクト(Valaxy規約)albums:アルバム配列(Valaxy規約)photos:写真配列(Valaxy規約)medium_zoom:medium-zoom画像ズームを使用するかどうか(Valaxy規約)
katex:KaTeX数式を使用するかどうか(Valaxy規約)codepen:CodePenを使用するかどうか(Valaxy規約)codeHeightLimit:コードブロックの高さ制限(Valaxy規約)
encrypt:暗号化を有効にするかどうか(Valaxy規約)password:暗号化パスワード(Valaxy規約)password_hint:パスワードヒント(Valaxy規約)gallery_password:アルバムパスワード(Valaxy規約)encryptedContent:暗号化されたコンテンツ(Valaxy規約)partiallyEncryptedContents:部分的に暗号化されたコンテンツ(Valaxy規約)encryptedPhotos:暗号化されたアルバム(Valaxy規約)
from:クライアントリダイレクトのソースパス(Valaxy規約)
YunPostMeta.vue、YunPostCard.vueなどはプロジェクトのカスタムコンポーネントソースファイルです。Valaxy規約は、そのフィールドがValaxy公式テーマ、プラグイン、またはドキュメントで明示的にサポートされているfrontmatterフィールドであることを示します。自動生成は、そのフィールドがValaxyまたは関連プラグインによって自動生成され、手動で入力する必要がないことを示します。
---
title:
zh-CN: 标题
en: title
icon: i-carbon-moon
color: green
description:
zh-CN: 描述
en: description
author:
zh-CN: 李明
en: Li Ming
date: 2077-01-01 01:12:00
updated: 2080-04-18 01:12:00
toc: true
aside: true
tags:
- {"zh-CN": "标签1", "en": "Tag1"}
- {"zh-CN": "标签2", "en": "Tag2"}
categories:
- {"zh-CN": "类型", "en": "categories"}
---
## 例 {lang=zh-CN}
## example {lang=zh-en}
::: zh-CN
文章内容...
:::
::: en
The content of the article...
:::
<!-- more -->
::: zh-CN
文章内容...
:::
::: en
The content of the article...
:::-
🏠 基本設定
url: サイトの完全URL、記事の永久リンク生成に使用lang: サイトのデフォルト言語title: サイトタイトルsubtitle: サイトサブタイトルdescription: サイトの説明timezone: サイトのタイムゾーンlanguages: 利用可能な言語リストfavicon: サイトアイコンlastUpdated: 最終更新時間を表示するかどうか
-
👤 著者情報
author.name: 著者名author.avatar: 著者アバターauthor.status: ステータス情報(絵文字とメッセージ)author.intro: 自己紹介author.email: メールアドレスauthor.link: 個人ホームページリンク
-
🔗 ソーシャルリンク
social: ソーシャルプラットフォームリンク配列、カスタムアイコンと色をサポート
-
🔍 検索設定
search.enable: 検索を有効にするかどうかsearch.type: 検索タイプ(fuse/algolia/engine)fuse: fuse検索設定
-
💬 コメントシステム
comment.enable: コメントを有効にするかどうか
-
💰 スポンサー設定
sponsor.enable: スポンサーを有効にするかどうかsponsor.description: スポンサー説明(多言語対応)sponsor.methods: スポンサー方法設定
-
📊 統計設定
statistics.enable: 統計を有効にするかどうかstatistics.readTime: 読書時間設定
-
🎨 テーマスタイル
type: テーマタイプ('strato'または'nimbo')colors.primary: テーマカラーvalaxyDarkOptions: ダークモード設定
-
🎯 ホームページ設定
banner: ホームページスローガン設定bg_image: 背景画像設定
-
💭 機能モジュール
say: 一言設定notice: お知らせ設定fireworks: クリック花火効果設定
-
📱 ナビゲーション設定
nav: ナビゲーションバー設定pages: ページ設定sidebar: サイドバー設定menu: メニューバー設定
-
👣 フッター設定
footer.since: サイト作成時間footer.cloud: フッター雲効果footer.icon: フッターアイコン設定footer.powered: Powered byを表示するかどうかfooter.beian: ICP登録情報設定
-
📝 記事設定
types: カスタム記事カードタイプoutlineTitle: 記事目次タイトル
# 依存関係のインストール
pnpm i
# 開発プレビュー
pnpm dev
# ビルド(SSGバージョン)
pnpm build
# ビルド(SPAバージョン)
pnpm build:spa
# ビルド(SSGバージョン、pnpm buildと同じ)
pnpm build:ssg
# RSS生成
pnpm rss
# ビルド結果のプレビュー
pnpm serve
# ビルドファイルのクリーン(カスタムコマンド、scripts/clean.jsで実装)
# 以下のファイルを削除:
# - public/feed.xml
# - public/atom.xml
# - public/feed.json
# - public/valaxy-fuse-list.json
# - dist/
pnpm clean# コードフォーマットチェック
pnpm lint
# コードフォーマット
pnpm format
# 型チェック
pnpm type-check# 依存関係の追加
pnpm add <package-name>
# 開発依存関係の追加
pnpm add -D <package-name>
# 依存関係の更新
pnpm update
# 依存関係の削除
pnpm remove <package-name># ビルドキャッシュのクリーン
pnpm clean
# 依存関係のクリーン
pnpm clean:all# 型宣言ファイルの生成
pnpm gen-types
# カスタムスクリプトの実行
pnpm run <script-name>pnpm i: プロジェクトのすべての依存関係をインストール(開発依存関係を含む)pnpm dev: ホットリロード付きの開発サーバーを起動pnpm build: 本番環境コードをビルド(SSGバージョン)、distディレクトリに出力pnpm build:spa: シングルページアプリケーションバージョンをビルドpnpm build:ssg: 静的サイトバージョンをビルドpnpm rss: RSS購読ファイルを生成pnpm serve: ビルドされた本番環境コードをプレビュー
- プロジェクトを初めてクローンした後、
pnpm iを実行して依存関係をインストール - 開発時は
pnpm devを使用して開発サーバーを起動 - ビルド前にすべてのコードが保存されていることを確認
- 依存関係の問題が発生した場合は、
node_modulesディレクトリを削除してpnpm iを再実行
pages/: すべてのページコンテンツposts/: ブログ記事about/: アバウトページ
components/: カスタムVueコンポーネントlayouts/: カスタムレイアウトコンポーネントstyles/: カスタムスタイルファイルlocales/: 国際化言語ファイルutils/: ユーティリティ関数types/: TypeScript型宣言setup/: アプリケーション初期化設定stores/: Pinia状態管理plugins/: カスタムプラグインpublic/: 静的リソースファイルdist/: ビルド後に生成されるファイル
site.config.ts: サイト設定theme.config.ts: テーマ設定valaxy.config.ts: Valaxyフレームワーク設定tsconfig.json: TypeScript設定package.json: プロジェクト依存関係設定pnpm-lock.yaml: 依存関係バージョンロックファイル
.vscode/: VSCodeエディタ設定.github/: GitHub Actionsワークフロー設定.editorconfig: エディタ共通設定.npmrc: NPM設定.gitignore: Git無視ファイル設定
.github/: Githubデプロイ設定vercel.json: Vercelデプロイ設定netlify.toml: Netlifyデプロイ設定nginx.conf: Nginxサーバー設定Dockerfile: Dockerコンテナ設定.dockerignore: Docker無視ファイル
.valaxy/: Valaxyビルドキャッシュnode_modules/: 依存パッケージディレクトリ
scripts/: カスタムスクリプトconfig/: その他の設定ファイル
RSS機能が不要な場合、または多言語frontmatterによるRSS生成エラーを避けたい場合は、以下の方法でRSS自動生成を無効化できます:
node_modules/.pnpm/valaxy@0.23.4_.../node_modules/valaxy/dist/chunk-OXTCPOR5.jsファイルを開きます。rssModuleまたはbuild:afterを検索し、以下のコードを見つけます:setup(node) { node.hook("build:after", async () => { //console.log(); //await build(node.options); return; }); }
await build(node.options);をコメントアウトするか、直接return;とすることで、ビルド時にRSSファイルが自動生成されなくなります。
注意: valaxy依存関係をアップグレードするたびに、このファイルは上書きされるため、再操作が必要です。
i18n.ts [📁 utils] 🔗
- 機能:多言語コンテンツを解析し、オブジェクトと文字列形式をサポート。
- 使用方法:
parseI18nContent({ 'zh-CN': '中国語', 'en': 'English' }) // 現在の言語に対応するコンテンツを返す parseI18nContent('プレーンテキスト') // 文字列を直接返す
formatTimestamp.ts [📁 utils] 🔗
- 機能:タイムスタンプまたは日付オブジェクトを'YYYY-MM-DD HH:mm:ss'形式にフォーマット。
- 使用方法:
formatTimestamp(new Date()) // 現在時刻のフォーマットされた文字列を返す
shims.d.ts [📁 types] 🔗
- 機能:TypeScript型宣言ファイル、モジュール型定義を拡張するために使用。
- 主な目的:
.ymlと.yamlファイルのモジュール型を宣言- Vue I18nの型サポートを提供
- TypeScriptがYAML形式の言語ファイルを正しく識別し型チェックできるようにする
- 使用シナリオ:
- プロジェクトがVue I18nを使用して国際化を行う場合
- YAMLファイルを使用して設定や言語ファイルを保存する場合
- これらのファイルタイプにTypeScriptサポートが必要な場合
- ファイル内容:
declare module '*.yml' { import { DefineLocaleMessage } from 'vue-i18n'; const messages: DefineLocaleMessage; export default messages; } declare module '*.yaml' { import { DefineLocaleMessage } from 'vue-i18n'; const messages: DefineLocaleMessage; export default messages; }
404.vue [📁 layouts] 🔗
- 機能:404エラーページを表示し、楽しい多言語レシピ表示機能を提供。
- 主な特徴:
- 多言語サポート:簡体字中国語、繁体字中国語、英語、日本語の4言語でレシピコンテンツを提供
- 動的切り替え:異なる言語のレシピコンテンツの動的切り替え表示をサポート
- スタイル最適化:
- 404数字にシャドウ効果を追加
- カスタムボタンスタイル、ホバー効果をサポート
- レシピコンテンツのレイアウトと間隔を最適化
categories.vue [📁 layouts] 🔗
- 機能:カテゴリーページレイアウト、多言語カテゴリー表示と管理をサポート。
- 主な特徴:
- 多言語サポート:
parseI18nContentユーティリティ関数を統合- カテゴリー名の表示ロジックを最適化
- カテゴリーフィルタリング:
- オブジェクト形式のカテゴリーデータをサポート
- URLパラメータ処理を最適化
- カテゴリー統合:
- 多言語カテゴリーの統合表示を実装
- カテゴリーカウント統計を最適化
- ページ最適化:
- トランジションアニメーション効果を追加
- カテゴリーリスト表示方法を改善
- 多言語サポート:
tags.vue [📁 layouts] 🔗
- 機能:タグページレイアウト、多言語タグクラウド表示をサポート。
- 主な特徴:
- 多言語サポート:
parseI18nContentユーティリティ関数を統合- タグ名の表示ロジックを最適化
- タグスタイルシステム:
- 使用頻度に基づいてフォントサイズを動的に計算
- タグカラーのグラデーション効果を実装
- TinyColorライブラリを使用してカラー混合を処理
- タグフィルタリング:
- オブジェクト形式のタグデータをサポート
- URLパラメータ処理を改善
- タグ統合:
- 多言語タグの統合表示を実装
- タグカウント統計を最適化
- ページ最適化:
- トランジションアニメーション効果を追加
- タグクラウドレイアウトを最適化
- レスポンシブデザインをサポート
- 多言語サポート:
index.scss [📁 styles] 🔗
- 機能:サイドバー背景画像とダークモードスタイルを定義。
- 使用方法:
// サイドバー背景画像スタイル .yun-fullscreen-menu { position: relative; &::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: -1; background-image: url('https://cloudflare-imgbed-telegraph.pages.dev/file/MTYW_Nobi_With_Mu_20250514.webp'); background-position: bottom 0rem center; background-size: contain; background-repeat: no-repeat; opacity: 0.4; transition: all 0.3s ease; } } // ダークモードスタイル html.dark { .yun-fullscreen-menu { &::before { background-image: url('https://cloudflare-imgbed-telegraph.pages.dev/file/MTYW_Onocle_CardGame_Mu_20250527.webp'); opacity: 0.8; } } }
setupフォルダはアプリケーションの初期化設定ファイルを格納するために使用され、主にGoogle Analyticsトラッキングとその他のアプリケーションレベルの設定を構成するために使用されます。
- main.ts [📁 setup] 🔗:メインアプリケーション設定ファイル、アプリケーションの初期化とGoogle Analyticsトラッキングのインストールに使用。
- gtag.ts [📁 setup] 🔗:Google Analyticsトラッキング設定、クライアント側でGoogle Analyticsをインストールしルートをトラッキングするために使用。
これらのコンポーネントは主にMarkdown記事のfrontmatter多言語化をサポートするために使用され、parseI18nContentユーティリティ関数を通じて実装されています:
- YunPostCard.vue [📁 components] 🔗:記事カードコンポーネント、多言語タイトルとコンテンツ表示をサポート
- YunPostCategories.vue [📁 components] 🔗:記事カテゴリーコンポーネント、多言語カテゴリー名をサポート
- YunPostTags.vue [📁 components] 🔗:記事タグコンポーネント、多言語タグ名をサポート
- YunPostMeta.vue [📁 components] 🔗:記事メタ情報コンポーネント、多言語説明と著者情報をサポート
- YunNavMenuTitle.vue [📁 components] 🔗:ナビゲーションメニュータイトルコンポーネント、多言語表示をサポート
- YunCategory.vue [📁 components] 🔗:カテゴリーコンポーネント、多言語カテゴリー名をサポート
- YunCategoryChildItem.vue [📁 components] 🔗:サブカテゴリーコンポーネント、多言語表示をサポート
- YunPostNav.vue [📁 components] 🔗:記事ナビゲーションコンポーネント、多言語をサポート
- YunPostsInfo.vue [📁 components] 🔗:記事情報コンポーネント、多言語表示をサポート
- YunPostCollapseItem.vue [📁 components] 🔗:記事折りたたみ項目コンポーネント、多言語コンテンツをサポート
これらのコンポーネントはウェブサイトのアクセス統計と実行時間表示に使用されます:
-
YunPostMeta.vue [📁 components] 🔗:
- 不蒜子ページビュー統計を統合
-
YunFooter.vue [📁 components] 🔗:
- ウェブサイトの実行時間を表示(デプロイ時からカウント)
- 不蒜子サイト総アクセス統計を統合
これらのコンポーネントはウェブサイトの特色機能を提供します:
- YunBanner.vue [📁 components] 🔗:バナーコンポーネント、アニメーション表示時間をカスタマイズ、ユーザー体験を最適化
- YunSay.vue [📁 components] 🔗:一言コンポーネント、Google Translate APIを統合して一言コンテンツを自動翻訳、多言語表示をサポート
- YunNotice.vue [📁 components] 🔗:通知コンポーネント、設定ファイルでカスタム多言語通知コンテンツをサポート
- YunSponsor.vue [📁 components] 🔗:スポンサーコンポーネント、設定ファイルでカスタム多言語スポンサー説明をサポート
これらのコンポーネントはウェブサイトの全体的なレイアウトとナビゲーションに使用され、すべて多言語サポートを統合しています:
- YunLayoutPostTag.vue [📁 components] 🔗:タグクラウドレイアウトコンポーネント、動的スタイル計算をサポート
- YunNavMenuItem.vue [📁 components] 🔗:ナビゲーションメニュー項目コンポーネント、多言語表示をサポート
- YunPageHeader.vue [📁 components] 🔗:ページタイトルコンポーネント、多言語タイトルをサポート
- YunSidebarLinks.vue [📁 components] 🔗:サイドバーリンクコンポーネント、多言語リンクテキストをサポート
- YunPrologueSquare.vue [📁 components] 🔗:プロローグスクエアコンポーネント、多言語コンテンツをサポート
site.config.ts[📁 root] 🔗とtheme.config.ts[📁 root] 🔗でカスタム多言語設定をサポート:- Noticeモジュール:多言語通知コンテンツをサポート
- Sponsorモジュール:多言語スポンサー説明をサポート
as any型アサーションソリューションを使用して関数が正しく多言語設定を読み取ることを確保
現在使用中のvalaxy 0.23.4リリース向け valaxy公式の型宣言の制限により、
site.config.ts[📁 root] 🔗とtheme.config.ts[📁 root] 🔗で多言語オブジェクト(sponsor.description、notice.contentなど)をサポートするには、as any型アサーションを使用する必要があります。そうしないと型エラーが発生します。
// site.config.ts
sponsor: {
enable: true,
description: {
'zh-CN': '我是学生给我钱(没有说礼貌的意思)',
'en': 'Student here, send money—— no cap'
} as any,
// ...
}
// theme.config.ts
notice: {
enable: true,
hideInPages: false,
content: {
'zh-CN': '※置顶: Who am I ? | (UTC+8)2025-03-06 14:27:19',
'en': '※Pinned: Who am I ? | (UTC+8)2025-03-06 14:27:19'
} as any,
}- これはvalaxy公式の型宣言でdescription/contentがstring型のみをサポートし、オブジェクトを直接渡せないためです。
as anyを使用することで型チェックをバイパスでき、実際の実行時には問題ありません。- 公式の型宣言がオブジェクト型をサポートするようにアップグレードされた場合、
as anyを削除できます。 - すべてのコンポーネントは
parseI18nContentユーティリティ関数 [📁 utils] 🔗を統合して多言語コンテンツを処理 - frontmatterでオブジェクト形式を使用して多言語コンテンツを定義することをサポート:
title: zh-CN: 中文标题 en: English Title description: zh-CN: 中文描述 en: English Description
-
多言語リアルタイム切り替えの最適化
- タグクラウドコンポーネント(YunLayoutPostTag.vue)の多言語リアルタイム応答
- カテゴリーページ記事リストの多言語リアルタイム切り替え
- タグページ記事リストの多言語リアルタイム切り替え
i18n.tsユーティリティ関数の複雑なコンポーネントサポートの最適化
-
多言語フレームワークの拡張
- valaxyフレームワーク自体が2つ以上の言語をサポートする方法を理解していない
localesディレクトリの言語サポートを完了(対応するキーファイルを予約済み):- 繁体字中国語(zh-TW)サポート
- 日本語(ja)サポート
- 多言語切り替えのユーザーインターフェースを設計
-
ローカル検索戦略の問題
- fuse.jsスキームのローカル検索戦略は、現在の多言語化frontmatter記事に適していない
- ビルド後のサイトで、記事の詳細内容が検索できないなどの状況が発生する