貢献
このページの内容

React Routerへの貢献

貢献していただきありがとうございます!

オープンソースにおいては、様々な種類の貢献があり、そのすべてが価値があります。貢献を準備する上で役立ついくつかのガイドラインを以下に示します。

セットアップ

コードベースに貢献する前に、リポジトリをフォークする必要があります。これは、どのような種類の貢献を行うかによって少し異なります。

  • すべての新機能、バグ修正、またはreact-routerのコードに触れるものは、devブランチから分岐して、devブランチにマージする必要があります。
  • ドキュメントのみを変更する場合は、mainブランチから分岐して、mainブランチにマージできます。

以下の手順で、このリポジトリへの変更を貢献するための準備が整います。

  1. リポジトリをフォークします(このページの右上にあるForkボタンをクリックします)。
  2. フォークしたリポジトリをローカルにクローンします。
# in a terminal, cd to parent directory where you want your clone to be, then
git clone https://github.com/<your_github_username>/react-router.git
cd react-router

# if you are making *any* code changes, make sure to checkout the dev branch
git checkout dev
  1. 依存関係をインストールし、ビルドします。React Routerはpnpmを使用しているため、あなたも使用する必要があります。npmを使用してインストールすると、不要なpackage-lock.jsonファイルが生成されます。

バグを発見したと思いますか?

Issueテンプレートに従い、コード例を用いて再現方法を明確に示してください。最も良いのは、失敗するテストを含むプルリクエストです。次に良いのは、バグを説明するCodeSandboxまたはリポジトリへのリンクです。

サンプルを追加しますか?

サンプルは、mainブランチに直接追加できます。mainのローカルクローンからブランチを作成します。完了したら、プルリクエストを作成し、サンプルを概説してください。

新しいAPIまたは変更されたAPIを提案しますか?

React Routerでやりたいことを示す、思慮深いコメントといくつかのサンプルコードを提供してください。変更または追加する必要があるものについて結論を出す前に、現在のAPIによってどのように制限されているかを示すことができれば、議論が円滑になります。

経験上、小さなAPIの方が通常は優れていることがわかっているので、現在のAPIに明らかな制限がない限り、新しいものを追加することには少し躊躇するかもしれません。とはいえ、これまで考慮していなかったケースについて、常に喜んでお聞きしたいと思っていますので、遠慮しないでください!:)

Issueが注目されていない?

バグを修正する必要があり、誰も修正していない場合は、自分で修正してプルリクエストを作成するのが最善です。オープンソースコードは私たち全員のものであり、それを前進させるのは私たち全員の責任です。

プルリクエストを作成しますか?

プルリクエストは、マージするために2人以上の共同作業者の承認のみが必要です。PR作成者が共同作業者の場合、1つとしてカウントされます。

GitHubでPRを作成するときは、ベースを正しいブランチに設定してください。コードに触れるPRを送信する場合は、devブランチにする必要があります。「変更を比較」見出しの下にあるドロップダウンを使用して、PRを作成するときにGitHubでベースを設定します:

テスト

バグを修正または機能を追加するすべてのコミットには、テストが必要です。

<blink>テストなしでコードをマージしないでください!</blink>

ドキュメント + サンプル

APIを変更または追加するすべてのコミットは、関連するすべてのサンプルとドキュメントも更新するプルリクエストで行う必要があります。

開発

パッケージ

React Routerは、複数のパッケージのコードをホストするためにモノレポを使用しています。これらのパッケージはpackagesディレクトリにあります。

依存関係のインストールとさまざまなスクリプトの実行を管理するために、pnpmワークスペースを使用しています。すべてをインストールするには、pnpmがインストールされていることを確認してから、リポジトリのルートからpnpm installを実行します。

ビルド

ルートディレクトリからpnpm buildを呼び出すと、ビルドが実行され、数秒しかかかりません。個々のパッケージは相互に依存しているため、すべてのパッケージを一緒にビルドすることが重要です。

テスト

テストを実行する前に、ビルドを実行する必要があります。ビルド後、ルートディレクトリからpnpm testを実行すると、すべてのパッケージのテストが実行されます。特定のパッケージのテストを実行する場合は、pnpm test --projects packages/<package-name>を使用します。

# Test all packages
pnpm test

# Test only react-router-dom
pnpm test --projects packages/react-router-dom

リポジトリのブランチ戦略

このリポジトリは、異なる目的のために個別のブランチを保持しています。それらは次のようになります。

- main   > the most recent release and current docs
- dev    > code under active development between stable releases
- v5     > the most recent code for a specific major release

さまざまな機能や実験のために他のブランチが存在する可能性がありますが、すべての重要な処理はこれらのブランチから行われます。

新規リリース

新しいリリースを作成する時期が来たら、リリースの種類に応じて、ブランチ戦略に基づくプロセスに従います。

react-router@next リリース

devブランチの現在の状態から実験的なリリースを作成します。それらは@nextタグを使用してインストールできます。

pnpm add react-router-dom@next
# or
npm install react-router-dom@next

これらのリリースは、PRがdevブランチにマージされると自動化されます。

最新メジャーリリース

# Start from the dev branch.
git checkout dev

# Merge the main branch into dev to ensure that any hotfixes and
# docs updates are available in the release.
git merge main

# Create a new release branch from dev.
git checkout -b release/v6.1.0

# Create a new tag and update version references throughout the
# codebase.
pnpm run version [nextVersion]

# Push the release branch along with the new release tag.
git push origin release/v6.1.0 --follow-tags

# Wait for GitHub actions to run all tests. If the tests pass, the
# release is ready to go! Merge the release branch into main and dev.
git checkout main
git merge release/v6.1.0
git checkout dev
git merge release/v6.1.0

# The release branch can now be deleted.
git branch -D release/v6.1.0
git push origin --delete release/v6.1.0

# Now go to GitHub and create the release from the new tag. Let
# GitHub Actions take care of the rest!

ホットフィックスリリース

重要なバグをすぐに修正する必要がある場合があります。バグが最新リリースに影響する場合は、main(またはバグが存在する関連するメジャーリリースブランチ)から直接新しいバージョンを作成できます。

# From the main branch, make sure to run the build and all tests
# before creating a new release.
pnpm install && pnpm build && pnpm test

# Assuming the tests pass, create the release tag and update
# version references throughout the codebase.
pnpm run version [nextVersion]

# Push changes along with the new release tag.
git push origin main --follow-tags

# In GitHub, create the release from the new tag and it will be
# published via GitHub actions

# When the hot-fix is done, merge the changes into dev and clean
# up conflicts as needed.
git checkout dev
git merge main
git push origin dev
ドキュメントとサンプル CC 4.0