diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 8384cfa..c6ad404 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,30 +1,10 @@ # What diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bfd07ea..5b26db4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,6 @@ # Contribution guide +**[✨ English version available](/docs/CONTRIBUTING.en.md)** + プロジェクトに興味を持っていただきありがとうございます! このドキュメントでは、プロジェクトに貢献する際に必要な情報をまとめています。 @@ -8,10 +10,37 @@ また、実装に取り掛かるときは当該Issueに自分をアサインしてください(自分でできない場合は他メンバーに自分をアサインしてもらうようお願いしてください)。 自分が実装するという意思表示をすることで、作業がバッティングするのを防ぎます。 +## Issues +Issueを作成する前に、以下をご確認ください: +- 重複を防ぐため、既に同様の内容のIssueが作成されていないか検索してから新しいIssueを作ってください。 +- Issueを質問に使わないでください。 + - Issueは、要望、提案、問題の報告にのみ使用してください。 + - 質問は、[Misskey Forum](https://forum.misskey.io/)や[Discord](https://discord.gg/Wp8gVStHW3)でお願いします。 + +## PRの作成 +PRを作成する前に、以下をご確認ください: +- 可能であればタイトルに、以下で示すようなPRの種類が分かるキーワードをプリフィクスしてください。 + - fix / refactor / feat / enhance / perf / chore 等 + - また、PRの粒度が適切であることを確認してください。ひとつのPRに複数の種類の変更や関心を含めることは避けてください。 +- このPRによって解決されるIssueがある場合は、そのIssueへの参照を本文内に含めてください。 +- [`CHANGELOG.md`](/CHANGELOG.md)に変更点を追記してください。リファクタリングなど、利用者に影響を与えない変更についてはこの限りではありません。 +- この変更により新たに作成、もしくは更新すべきドキュメントがないか確認してください。 +- 機能追加やバグ修正をした場合は、可能であればテストケースを追加してください。 +- テスト、Lintが通っていることを予め確認してください。 + - `npm run test`、`npm run lint`でぞれぞれ実施可能です +- `npm run api`を実行してAPIレポートを更新し、差分がある場合はコミットしてください。 + - APIレポートの詳細については[こちら](#api-extractor) + +ご協力ありがとうございます🤗 + ## Tools +### eslint +このプロジェクトではコードのフォーマットチェック/整形に[eslint](https://eslint.org/)を導入しています。 +CI上でも自動でチェックされ、ルールに則っていないコードがあるとエラーになります。 + ### Jest このプロジェクトではテストフレームワークとして[Jest](https://jestjs.io/)を導入しています。 -テストは[`/test`ディレクトリ](./test)に置かれます。 +テストは[`/test`ディレクトリ](/test)に置かれます。 テストはCIにより各コミット/各PRに対して自動で実施されます。 ローカル環境でテストを実施するには、`npm run test`を実行してください。 @@ -19,14 +48,14 @@ ### tsd このプロジェクトでは型のテストを行うために[tsd](https://github.com/SamVerschueren/tsd)を導入しています。 Jestによるテストでは「型が期待したものか」というのはチェックすることができません。tsdを使うことで、型が意図したものであることを担保することができます。 -tsdによる型テストは[`/test-d`ディレクトリ](./test-d)に置かれます。 +tsdによる型テストは[`/test-d`ディレクトリ](/test-d)に置かれます。 テストはCIにより各コミット/各PRに対して自動で実施されます。 ローカル環境でテストを実施するには、`npm run test`を実行してください。 ### API Extractor このプロジェクトでは[API Extractor](https://api-extractor.com/)を導入しています。API ExtractorはAPIレポートを生成する役割を持ちます。 -APIレポートはいわばAPIのスナップショットで、このライブラリが外部に公開(export)している各種関数や型の定義が含まれています。`npm run api`コマンドを実行すると、その時点でのレポートが[`/etc`ディレクトリ](./etc)に生成されるようになっています。 +APIレポートはいわばAPIのスナップショットで、このライブラリが外部に公開(export)している各種関数や型の定義が含まれています。`npm run api`コマンドを実行すると、その時点でのレポートが[`/etc`ディレクトリ](/etc)に生成されるようになっています。 exportしているAPIに変更があると、当然生成されるレポートの内容も変わるので、例えばdevelopブランチで生成されたレポートとPRのブランチで生成されたレポートを比較することで、意図しない破壊的変更の検出や、破壊的変更の影響確認に用いることができます。 また、各コミットや各PRで実行されるCI内部では、都度APIレポートを生成して既存のレポートと差分が無いかチェックしています。もし差分があるとエラーになります。 @@ -42,7 +71,7 @@ PRを作る際は、`npm run api`コマンドを実行してAPIレポートを また、各PRに対してもそのブランチのカバレッジが自動的に計算され、マージ先のカバレッジとの差分を含んだレポートがCodecovのbotによりコメントされます。これにより、そのPRをマージすることでどれくらいカバレッジが増加するのか/減少するのかを確認することができます。 ## レビュイーの心得 -PRを作成するときのテンプレートに色々書いてあるので読んでみてください。(このドキュメントに移してもいいかも?) +[PRのセクション](#PRの作成)をご一読ください。 また、後述の「レビュー観点」も意識してみてください。 ## レビュワーの心得 diff --git a/docs/CONTRIBUTING.en.md b/docs/CONTRIBUTING.en.md new file mode 100644 index 0000000..1db282e --- /dev/null +++ b/docs/CONTRIBUTING.en.md @@ -0,0 +1,30 @@ +# Contribution guide +:v: Thanks for your contributions :v: + +**ℹ️ Important:** This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.** +Also, you might receive comments on your Issue/PR in Japanese, but you do not need to reply to them in Japanese as well.\ +The accuracy of translation into Japanese is not high, so it will be easier for us to understand if you write it in the original language. +It will also allow the reader to use the translation tool of their preference if necessary. + +## Issues +Before creating an issue, please check the following: +- To avoid duplication, please search for similar issues before creating a new issue. +- Do not use Issues as a question. + - Issues should only be used to feature requests, suggestions, and report problems. + - Please ask questions in the [Misskey Forum](https://forum.misskey.io/) or [Discord](https://discord.gg/Wp8gVStHW3). + +## Creating a PR +Thank you for your PR! Before creating a PR, please check the following: +- If possible, prefix the title with a keyword that identifies the type of this PR, as shown below. + - fix / refactor / feat / enhance / perf / chore etc. + - Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR. +- If there is an Issue which will be resolved by this PR, please include a reference to the Issue in the text. +- Please add the summary of the changes to [`CHANGELOG.md`](/CHANGELOG.md). However, this is not necessary for changes that do not affect the users, such as refactoring. +- Check if there are any documents that need to be created or updated due to this change. +- If you have added a feature or fixed a bug, please add a test case if possible. +- Please make sure that tests and Lint are passed in advance. + - You can run it with `npm run test` and `npm run lint`. +- Run `npm run api` to update the API report and commit it if there are any diffs. + +Thanks for your cooperation 🤗 +