hiyocordのコントリビューター¶
このページは、Hiyocordプラットフォーム自体(hiyocord-nexus, hiyocord-packagesなど)の開発に貢献したい人向けの概要です。自分のDiscord bot(サービス)をHiyocordの上に構築したいだけの場合は、hiyocord serviceの開発者向けドキュメントを参照してください。
Note
現時点では、各リポジトリにCONTRIBUTING.mdのような詳細なガイドは整備されていません。ここでは各リポジトリの開発コマンドとリリースフローの要点のみをまとめています。詳細な手順や設計判断については、リポジトリ本体(README、CHANGELOG、Issue/PR)を参照してください。
対象リポジトリ¶
| リポジトリ | 役割 |
|---|---|
| hiyocord-nexus | 中央ルーティングハブ本体。hiyocord-nexus(Worker本体)、hiyocord-nexus-core(共有ライブラリ)、hiyocord-nexus-types(型定義)、hiyocord-nexus-cli(gen-key/manifestコマンド)、hiyocord-nexus-web(管理画面)のモノレポ |
| hiyocord-packages | Service Worker側で使う共有ライブラリ群(discord-rest-api, github-rest-api, discord-interaction-client, tsconfig)のモノレポ |
| wrangler-configurer | wrangler.config.tsからwrangler.jsoncを生成するCLIツール |
| hiyocord-service-workers | Service Worker用のGitHubテンプレートリポジトリ |
| discord-auth-service | テンプレートを使った実サービスの実装例 |
開発環境構築¶
いずれのリポジトリも共通で、クローン後にnpm installで依存関係をインストールします。
テスト・Lint¶
リポジトリごとに整備状況が異なります:
| リポジトリ | テスト | Lint |
|---|---|---|
| hiyocord-nexus | npm run test(Vitest。hiyocord-nexusとhiyocord-nexus-coreの一部モジュールにテストあり) |
ルートレベルのlint設定なし(hiyocord-nexus-webのみnpm run lintでESLint) |
| hiyocord-packages | npm run test(各パッケージは現状スタブで実質未実装) |
npm run lint(Prettier)、npm run eslint:check |
| wrangler-configurer | 未実装(testスクリプトはstub) |
未実装(lintスクリプトはstub) |
| hiyocord-service-workers / discord-auth-service | 未実装(npm testはエラーで終了するプレースホルダー) |
なし |
リリースフロー¶
リポジトリによってリリースの仕組みが異なります:
- hiyocord-nexus / hiyocord-packages: Changesetsを使用。変更をPRに含める際は
npx changesetでchangesetファイルを追加します。masterへのマージ後、CIがnpx changeset publishでGitHub Packages(npm.pkg.github.com)に自動公開します - wrangler-configurer: Changesetsは使わず、GitHub Actionsの
workflow_dispatch(npm version <patch|minor|major|premajor|prerelease>を手動実行)でバージョンを上げ、タグpushをトリガーにGitHub Packagesとnpmjsの両方へ公開します - hiyocord-service-workers / discord-auth-service: パッケージとしては公開されません。
masterへのpushでwrangler deployによりCloudflare Workersへ直接デプロイされます
ブランチ・レビュー運用¶
- すべてのリポジトリで既定ブランチは
masterです(mainではありません) - PRテンプレート・Issueテンプレートは現時点でどのリポジトリにも存在しません
- CODEOWNERSは
hiyocord-packagesのみに存在し、.github/workflowsと*.gen.ts(OpenAPI生成コード)が対象です - 依存関係の更新はRenovate(hiyocord/renovateの共通設定を利用)とDependabotの両方で自動化されています
関連リソース¶
- GitHub Organization
- Hiyocord Nexus アーキテクチャ - コントリビューターにとっても、Nexusの内部構造を理解する上で参考になります
- 各リポジトリの
CHANGELOG.md(Changesetsにより自動生成)には、これまでの設計変更の経緯が記録されています