Quartz 構成設定 基本
Built-in Features
Backlinks
Backlinks (バックリンク) は、現在のページを参照している他のページへのリンクを表示する機能です。
設定方法:
quartz.config.tsのPlugin.Componentセクションで有効化します:
Plugin.Component.Backlinks({
title: "リンク元のページ",
showDate: true,
dateFormat: "YYYY-MM-DD"
})カスタマイズオプション:
title: バックリンクセクションのヘッダータイトルshowDate: 日付表示の有無(true/false)dateFormat: 日付フォーマット(moment.js形式)
Tags
タグ機能は、コンテンツの分類と整理に役立ちます。
設定方法:
- Markdownファイルのフロントマターにタグを追加します:
---
title: 記事タイトル
tags:
- タグ1
- タグ2
---- タグページを有効化します:
Plugin.Component.TagList()タグ関連の高度な設定:
Plugin.Component.TagList({
minTagCount: 2, // 表示する最小タグ数
maxTagCount: 50, // 表示する最大タグ数
sortByFrequency: true // 使用頻度でソート
})Permalinks
パーマリンクは、コンテンツの永続的なURLを設定する機能です。
設定方法:
- フロントマターでカスタムスラッグを指定:
---
title: 記事タイトル
permalink: custom-url-slug
---quartz.config.tsでパーマリンク形式を設定:
Plugin.Route.ValidPath({
formatPath: (path) => {
// カスタム処理
return path
}
})パーマリンク活用例:
- ブログ記事:
/blog/2025/05/article-title - ドキュメント:
/docs/category/subcategory/topic
User customize
Change Theme
Quartzは複数のテーマを提供しています。テーマを変更するには:
quartz.config.tsのThemeオブジェクトを編集:
export default defineConfig({
theme: {
typography: {
fontFamily: "var(--font-body)",
dark: "#eeeeee",
light: "#333333",
},
colors: {
lightMode: {
light: "#fafafa",
lightgray: "#e5e5e5",
gray: "#b8b8b8",
darkgray: "#4e4e4e",
dark: "#2b2b2b",
primary: "#576cbc",
secondary: "#0f2d6b",
},
darkMode: {
light: "#161618",
lightgray: "#393639",
gray: "#646464",
darkgray: "#d4d4d4",
dark: "#ebebec",
primary: "#5b8aff",
secondary: "#a1c1ff",
},
},
},
})主なカスタマイズ項目:
typography: フォントやテキストカラーcolors: 明暗モード別のカラースキーム
Styles
- Disable selecting
テキスト選択を無効化するカスタムCSSを追加します:
custom.scss:
.no-select {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
// 特定のセクションで選択を無効化
.copyright, .sensitive-info {
@extend .no-select;
}
// 画像選択の無効化
img {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
pointer-events: none;
}このスタイルを適用するには:
stylesディレクトリにcustom.scssを作成- コンテンツに対応するクラスを追加
Custom plugin
Quartzでは独自のプラグインを作成して機能拡張できます。
基本的なプラグイン作成ステップ:
quartz/plugins/customディレクトリを作成- プラグインファイル(例:
myPlugin.ts)を作成:
import { QuartzTransformerPlugin } from "../types"
export const MyCustomPlugin: QuartzTransformerPlugin = () => {
return {
name: "MyCustomPlugin",
transform(ctx) {
// コンテンツを変換するロジック
return ctx
},
}
}quartz.config.tsにプラグインを登録:
import { MyCustomPlugin } from "./quartz/plugins/custom/myPlugin"
export default defineConfig({
plugins: {
transformers: [
// ...他のプラグイン
MyCustomPlugin(),
],
},
})人気のカスタムプラグイン例:
- コードブロック構文ハイライト拡張
- 数式レンダリング
Folders/Files Order
フォルダやファイルの表示順序をカスタマイズできます。
quartz.config.ts:
Plugin.Explorer({
sortFn: (a, b) => {
// フォルダを常にファイルの前に表示
if (a.file.slug.split("/").length !== b.file.slug.split("/").length) {
return a.file.slug.split("/").length - b.file.slug.split("/").length
}
// 数字プレフィックスによる順序付け(例: 01-intro, 02-setup)
const aMatch = a.file.slug.match(/^(\d+)-/)
const bMatch = b.file.slug.match(/^(\d+)-/)
if (aMatch && bMatch) {
return parseInt(aMatch[1]) - parseInt(bMatch[1])
}
// デフォルトはアルファベット順
return a.file.slug.localeCompare(b.file.slug)
}
})Advanced Features
Search Functionality
Quartzに検索機能を追加する方法:
quartz.config.tsで検索プラグインを有効化:
Plugin.Search({
enablePreview: true,
searchOnlyTitle: false,
mode: "basic" // "basic" または "performance"
})- 検索インデックスのカスタマイズ:
Plugin.Search({
// ...
extraProperties: ["tags", "description"],
customSearchFilter: (node) => {
// 特定の条件に基づくフィルタリング
return !node.slug.startsWith("private/")
}
})Multilingual Support
多言語サイトのセットアップ:
- 言語ごとにコンテンツディレクトリを作成:
content/
en/
index.md
about.md
ja/
index.md
about.md
- フロントマターに言語を指定:
---
title: ページタイトル
lang: ja
---- 言語切り替えコンポーネントを追加:
// languageSwitcher.tsx
import { QuartzComponentConstructor } from "../types"
export const LanguageSwitcher: QuartzComponentConstructor = () => {
// 実装
}
// quartz.config.ts
import { LanguageSwitcher } from "./components/languageSwitcher"
export default defineConfig({
components: {
beforeBody: [LanguageSwitcher],
},
})Graph View
知識グラフビューを使用すると、コンテンツ間の関係を視覚化できます:
- グラフビューを有効化:
Plugin.Component.Graph({
localGraph: {
enabled: true,
depth: 2,
},
globalGraph: {
enabled: true,
scale: 1.0,
},
})- グラフのカスタマイズオプション:
drag: ドラッグ操作の有効化(true/false)zoom: ズーム操作の有効化(true/false)depth: ローカルグラフの深さrepelForce: ノード間の反発力
Callouts
特別な強調ブロック(Callouts)の使用:
Markdownで記述:
> [!NOTE]
>
> これは注釈です
> [!WARNING]
>
> これは警告です
> [!TIP]
>
> これはヒントですサポートされているCalloutタイプ:
NOTE: 一般的な注釈INFO: 情報WARNING: 警告ERROR: エラーTIP: ヒントEXAMPLE: 例QUESTION: 質問SUMMARY: 要約
カスタムCalloutの追加:
Plugin.Component.Callout({
customTypes: {
"CUSTOM": {
color: "#8855ff",
icon: "💫"
}
}
})Performance Optimization
Image Optimization
画像の最適化設定:
Plugin.Assets({
imageOptimization: {
enabled: true,
quality: 80,
formats: ["webp", "avif"]
}
})主な設定項目:
quality: 圧縮品質(0-100)formats: 変換フォーマットmaxWidth: 最大幅(ピクセル)
Code Splitting
大規模サイトのパフォーマンス向上のためのコード分割:
export default defineConfig({
// ...
build: {
bundleConfig: {
shouldSplitComponents: true,
splitting: true,
},
},
})Lazy Loading
コンテンツの遅延読み込み設定:
Plugin.Component.Image({
lazyLoad: true,
centerImages: true
})Deployment and Integration
GitHub Actions
- GitHub Actionsを使用した自動デプロイ: Cloudflare Pages 応用
Analytics Integration
アナリティクス統合:
Google Analyticsの追加:
Plugin.Analytics({
provider: "google",
trackingId: "G-XXXXXXXXXX"
})Plausible Analyticsの追加:
Plugin.Analytics({
provider: "plausible",
host: "plausible.io"
})Conclusion
Quartzの基本設定から高度なカスタマイズまで幅広くカバーしました。これらの設定を活用することで、強力でパーソナライズされたデジタルガーデンやドキュメントサイトを構築できます。
Quartzが提供する柔軟性と拡張性を最大限に活用し、独自のウェブサイトを作成してください。スタイリング、プラグイン、コンテンツ構造など、あらゆる要素を自由にカスタマイズして、ニーズに合った最適な環境を構築しましょう。
参考リソース: