コンテンツにスキップ

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-cligen-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で依存関係をインストールします。

git clone https://github.com/hiyocord/<repo>.git
cd <repo>
npm install

テスト・Lint

リポジトリごとに整備状況が異なります:

リポジトリ テスト Lint
hiyocord-nexus npm run test(Vitest。hiyocord-nexushiyocord-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_dispatchnpm 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テンプレートは現時点でどのリポジトリにも存在しません
  • CODEOWNERShiyocord-packagesのみに存在し、.github/workflows*.gen.ts(OpenAPI生成コード)が対象です
  • 依存関係の更新はRenovate(hiyocord/renovateの共通設定を利用)とDependabotの両方で自動化されています

関連リソース

  • GitHub Organization
  • Hiyocord Nexus アーキテクチャ - コントリビューターにとっても、Nexusの内部構造を理解する上で参考になります
  • 各リポジトリのCHANGELOG.md(Changesetsにより自動生成)には、これまでの設計変更の経緯が記録されています