# コントリビューション
ライブラリへの新規コントリビューションを歓迎しますが、以下のガイドラインに従ってください。
- 主要な追加または変更のPRを作成する前に、Issueを提起する (新しいウィンドウで開きます)か、Chart.js Discord (新しいウィンドウで開きます)の#devチャンネルで、予期されるAPIや実装について議論してください。これにより、事前にフィードバックを得て開発時間を節約し、メンテナにより多くのコンテキストと詳細を提供することで、レビューを迅速に行うことができます。
- 変更がすべてのユーザーにとって有用かどうか、またはChart.js プラグインを作成する方が適切かどうかを検討してください。
- コードがテストと`eslint`コード標準に合格することを確認してください。`pnpm test`を実行すると、リンターとテストの両方が実行されます。
- 単体テストを追加し、新しい機能を文書化してください(それぞれ`test/`および`docs/`ディレクトリ)。
- マイナーリリースでない限り、破壊的変更は避けてください。マイナーリリースは頻繁ではありません。高度な新機能についてはプラグインの作成を推奨しており、後方互換性を重視しています。
- 可能な限り、新しいメソッドはプライベートメソッドとして追加することを強く推奨します。メソッドは、クラスの外でトップレベルの`function`を作成するか、クラス内であれば`_`をプレフィックスとして追加し、`@private` JSDocを追加することで、プライベートにすることができます。公開APIはレビューにかなりの時間を要し、実装されると後方互換性を維持する能力が限られているため、変更できなくなります。プライベートAPIは、予期せぬケースに対処するための柔軟性を提供します。
# プロジェクトへの参加
アクティブなコミッターとコントリビューターは、自己紹介を行い、このプロジェクトへのコミットアクセスをリクエストすることを歓迎します。こちら (新しいウィンドウで開きます)から参加できる非常にアクティブなDiscordコミュニティがあります。お手伝いできると思われた方は、ぜひご参加ください!
# ビルドとテスト
まず、開発依存関係がインストールされていることを確認する必要があります。nodeとpnpmがインストールされている場合、Chart.jsリポジトリをローカルディレクトリにクローンし、コマンドラインでそのディレクトリに移動した後、以下を実行できます。
> pnpm install
これにより、Chart.jsのローカル開発依存関係がインストールされます。
リポジトリルートから以下のコマンドが利用できるようになりました。
> pnpm run build // build dist files in ./dist
> pnpm run autobuild // build and watch for source changes
> pnpm run dev // run tests and watch for source and test changes
> pnpm run lint // perform code linting (ESLint, tsc)
> pnpm test // perform code linting and run unit tests with coverage
`pnpm run dev`と`pnpm test`には、specファイル名と一致させるために使用される文字列を追加できます。例えば、`pnpm run dev plugins`は、`test/specs/**/*plugin*.js`に対して監視モードでkarmaを起動します。
# ドキュメント
ドキュメントの管理にはVuepress (新しいウィンドウで開きます)を使用しており、docsディレクトリにMarkdownファイルとして含まれています。これらのコマンドを使用して、ローカルでドキュメントサーバーを実行できます。
> pnpm run docs:dev
# 画像ベースのテスト
表示関連の機能の中には、一般的なJasmineユニットではテストが難しいものがあります。このため、画像ベースのテスト(#3988 (新しいウィンドウで開きます)および#5777 (新しいウィンドウで開きます))を導入して、チャートがピクセル単位で期待される画像と一致して描画されていることを確認しています。
画像ベースのテストで生成されたチャートは、**可能な限り最小限に**する必要があります。他の機能が壊れた場合に失敗を防ぐため、テスト対象の機能のみに焦点を当てる必要があります(例:スケールをテストする場合は、タイトルと凡例を無効にする)。
以下の手順に従って、新しい画像ベースのテストを作成できます。
- チャート設定と生成オプションを定義するJSファイル(例 (新しいウィンドウで開きます))またはJSONファイル(例 (新しいウィンドウで開きます))を作成します。
- `test/fixtures/{spec.name}/{feature-name}.json`にこのファイルを追加します。
- まだ存在しない場合は、`test/specs/{spec.name}.tests.js`の先頭にdescribe行 (新しいウィンドウで開きます)を追加します。
- `pnpm run dev`を実行します。
- 「デバッグ」ボタン(右上)をクリックします。関連するキャンバスが表示され、テストが失敗するはずです。
- チャートを右クリックし、「名前を付けて画像を保存」を選択して`test/fixtures/{spec.name}/{feature-name}.png`として保存します。ツールチップやホバー機能はアクティブにしないでください。
- ブラウザページを更新します(`CTRL+R`):テストはパスするはずです。
- JSONファイルで機能値を少し変更して、テストの関連性を確認します。
テストは両方のブラウザでパスする必要があります。一般的に、異なるブラウザ間でパスさせるのが非常に困難なため、画像テストではすべてのテキストを非表示にしています。そのため、画像ベースのテストではすべてのスケールを非表示にすることをお勧めします。アニメーションを無効にすることもお勧めします。それでもテストがパスしない場合は、`tolerance`と`threshold` (新しいウィンドウで開きます)をJSONファイルの先頭で調整し、**可能な限り低く**維持してください。
テストが失敗すると、期待される画像と実際の画像が表示されます。テストがパスした場合でも画像を表示したい場合は、JSONファイルで` "debug": true`を設定します。
# バグと問題
これらの問題は、GitHubページ(github.com/chartjs/Chart.js)で報告してください。サポートのリクエストにはIssueを使用しないでください。Chart.jsの使用に関するヘルプについては、Stack Overflowの`chart.js` (新しいウィンドウで開きます)タグをご覧ください。
構造化され、詳細なバグレポートは、プロジェクトにとって非常に価値があります。
バグ報告のガイドライン
- 既に報告されているかどうか、Issue検索を確認してください。
- 問題を単純なテストケースに絞り込んでください。
- バグの再現例を、JS Bin (新しいウィンドウで開きます)、JS Fiddle (新しいウィンドウで開きます)、またはCodepen (新しいウィンドウで開きます)などのウェブサイトで提供してください。(テンプレート (新しいウィンドウで開きます))`master`ブランチのバグ報告の場合は、https://chartjs.dokyumento.jp/dist/master/chart.umd.js (新しいウィンドウで開きます)(必要に応じてファイル名を変更してください)から最新のコードを参照できます。これらのファイルは予告なく削除される可能性があるため、本番環境では使用しないでください。
バグに関連する追加の詳細情報(ブラウザや画面密度に依存するか、特定の設定やデータでのみ発生するかなど)を提供してください。