プラグイン、テーマ、テーマコンポーネントによる Discourse の拡張、コアコードの扱い、Discourse API の利用に関するドキュメント。
はじめに
- はじめに: Discourse 開発の概要
開発環境
- Dev Container: Dev Container を使った Discourse 開発
- GitHub Codespaces: GitHub Codespaces での Discourse 開発
- Docker 環境: Docker を使った Discourse の開発用インストール
- macOS 環境: macOS での Discourse の開発用インストール
- Ubuntu/Debian 環境: Ubuntu または Debian での Discourse の開発用インストール
- Windows 環境: Windows での Discourse の開発用インストール
- Docker 非対応プラグイン: Docker 非対応の開発環境でのプラグインインストール
- ローカル環境: ローカルの Discourse 開発環境のセットアップ
- マルチサイト環境: マルチサイト開発環境のセットアップ
- Fedora 環境: Fedora Linux での Discourse 開発環境のセットアップ
コードと内部仕組み
- Ember コンポーネント: Discourse への Ember コンポーネントの追加
- リントとフォーマット: コミット前の自動リントとコードフォーマット
- 受入テスト: Discourse の Ember コード用の受入テストとコンポーネントテストの作成
- テストスイートの実行: Discourse コア、プラグイン、テーマの QUnit テストスイートの実行方法
- バージョン互換性: 古い Discourse インストール向けプラグイン・テーマバージョンの固定(d-compat ブランチ)
- Ember オブジェクト所有権: Ember オブジェクト所有権(getOwner、サービス注入など)
- JS パフォーマンス: Google の「tachometer」を用いた Discourse 内の JS パフォーマンス変化の測定
- GitHub Actions による CI: GitHub Actions を使った継続的インテグレーションのセットアップ
- Markdown 拡張: Markdown 拡張の開発者ガイド
- モダルの移行: レガシーコントローラーから新しい DModal コンポーネント API へのモーダル変換
- DModal API: Discourse 内でモーダルウィンドウ(ポップアップ/ダイアログ)をレンダリングするための DModal API の利用
- JS API: JS API の利用
- プラグインOutletコネクター: テーマまたはプラグインからのプラグイン Outlet コネクターの利用
- modifyClass: modifyClass を使ったコア動作の変更
- ルートの作成: Discourse でのルートの作成とデータ表示
- 認証方法: Discourse への新しい「管理型」認証方法の追加
- ActiveRecord モデルの誤ったシリアライズ: ActiveRecord モデルの誤ったシリアライズの防止
- テンプレートのオーバーライド: (推奨されません)テーマまたはプラグインからの Discourse テンプレートのオーバーライド
- サービスオブジェクト: Discourse でのサービスオブジェクトの利用
- システム仕様: Discourse ユーザーインターフェース用のエンドツーエンドシステム仕様の作成
- FormKit: フォーム描画のための Discourse ツールキット
- AppEvents トリガー: AppEvents トリガーリファレンス
- トランスフォーマー: トランスフォーマーを用いたクライアントサイドの値と動作のカスタマイズ
- トピックリストのカスタマイズ: トピックリストのカスタマイズ
- CSS ガイドライン: BEM を用いた CSS クラスのガイドライン
- JS 型ヒントと検証: JavaScript 型ヒントと検証(TypeScript)
- デバイス向けデザイン: 異なるデバイス向けデザイン(ビューポートサイズ、タッチ/ホバーなど)
プラグイン
- 基本プラグイン: Discourse プラグイン開発 - パート1 - 基本プラグインの作成
- プラグイン Outlet: Discourse プラグイン開発 - パート2 - プラグイン Outlet への接続
- サイト設定: Discourse プラグイン開発 - パート3 - カスタムサイト設定の追加
- Git セットアップ: Discourse プラグイン開発 - パート4 - Git のセットアップ
- 管理画面: Discourse プラグイン開発 - パート5 - 管理画面の追加
- 受入テスト: Discourse プラグイン開発 - パート6 - 受入テストの追加
- プラグインの公開: Discourse プラグイン開発 - パート7 - プラグインの公開
- 新しいロケール: プラグインからの新しいロケールの追加
- チャット統合: discourse-chat-integration への新しいプロバイダーの追加
- markdown-it 拡張: markdown-it 拡張の Discourse プラグインとしての再パッケージング
- Rails 自動読み込み: Rails 自動読み込み向けのプラグイン構造
テーマとコンポーネント
- テーマ開発: Discourse テーマとテーマコンポーネントの開発
- クイックリファレンス: テーマ開発者クイックリファレンスガイド
- デザイナーガイド: Discourse でのテーマ開始のためのデザイナーガイド
- テーマクリエイター: テーマクリエイターとテーマ CLI の使い始め
- テーマ CLI: テーマ構築を支援する Discourse テーマ CLI コンソールアプリのインストール
- テーマ構造: テーマとテーマコンポーネントの構造
- 複数の JS ファイル: テーマの JavaScript を複数のファイルに分割
- 複数の SCSS ファイル: テーマの SCSS を複数のファイルに分割
- テーマ設定: Discourse テーマへの設定の追加
- テーマ設定のオブジェクト型: テーマ設定のオブジェクト型
- 設定の移行: Discourse テーマ設定の移行
- テーマメタデータ: テーマへのメタデータとスクリーンショットの追加
- コア変数: テーマでの Discourse コア変数の利用
- 局所化可能な文字列: テーマとテーマコンポーネントへの局所化可能な文字列の追加
- E2E テスト: テーマとテーマコンポーネント用のエンドツーエンドシステムテスト
- メンテナンスの最小化: テーマカスタマイズのメンテナンス最小化
- フォントサイズ: テーマでのフォントサイズの変更
- アセットの含める: テーマとコンポーネントへのアセット(画像、フォントなど)の含める
- カスタムアイコン: テーマでの Discourse デフォルト SVG アイコンのカスタムアイコンへの置換
- ダークモード: 自動ダークモード対応のためのテーマとプラグインの更新
- テーマモディファイヤー: テーマモディファイヤー:簡単な紹介
- 疑似要素: CSS 疑似要素を用いたサイト上の任意の場所へのテキストまたは画像の挿入
- フォントコンポーネント: フォントテーマコンポーネントの作成と共有
- Highlight.JS 言語: テーマコンポーネント経由での Highlight.JS 用新しい言語のインストール
- ホームページコンテンツ: ホームページのみに表示されるカスタムコンテンツの追加
- メッセージフォーマット: 局所化のためのメッセージフォーマットサポート
- グローバルアイコン変更: アイコンのグローバル変更
- 代替アイコン: 代替アイコン
- ウィキ投稿スタイル: ウィキ投稿のスタイル変更
- 色 schemes: 色 schemes の作成と共有
- ナビゲーションメニュー: サイドバーやその他のオプションをプレビューするための
navigation_menuクエリパラメータの利用 - 投稿コンテンツスタイル: 独自のスタイルでの投稿コンテンツのカスタマイズ
- テーマスクリーンショット: Discourse テーマへのプレビュースクリーンショットの追加
- テーマ化可能なサイト設定: テーマによるサイト設定の制御
一般ガイド
- モバイルアプリのホワイトレーベル化: Discourse モバイルアプリのホワイトレーベル化決定前に考慮すべき事項
- カスタム自動化: カスタム自動化の作成
- 公開データダンプ: Discourse 公開データダンプ
- AI 評価: Discourse AI 評価の実行
テーマ開発チュートリアル
- 1 - はじめに: テーマ開発チュートリアル:1. はじめに
- 2 - リモートテーマ: テーマ開発チュートリアル:2. リモートテーマの作成
- 3 - CSS: テーマ開発チュートリアル:3. テーマ内の CSS
- 4 - Outlet: テーマ開発チュートリアル:4. Outlet を使ったコンテンツの挿入と置換
- 5 - コンポーネント: テーマ開発チュートリアル:5. コンポーネントの構築と利用
- 6 - JS API: テーマ開発チュートリアル:6. JS API の利用
- 7 - 結論: テーマ開発チュートリアル:7. まとめ