# 貢獻

歡迎對程式庫做出新的貢獻,但請您遵循以下準則

  • 在針對重大新增或變更開啟 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 devpnpm test 可以附加一個字串,用來比對規格檔案名稱。例如:pnpm run dev plugins 會在監看模式中啟動 Karma,以處理 test/specs/**/*plugin*.js

# 文件

我們使用 Vuepress (在新視窗開啟) 來管理文件,這些文件以 Markdown 檔案的形式包含在 docs 目錄中。您可以使用這些命令在本機執行文件伺服器

> pnpm run docs:dev

# 圖像式測試

有些與顯示相關的功能很難透過典型的 Jasmine 單元來測試。因此,我們引入了圖像式測試 (#3988 (在新視窗開啟)#5777 (在新視窗開啟)),以判斷圖表的繪製是否與預期影像完全一致。

圖像式測試中產生的圖表應盡可能簡潔,並僅專注於測試的功能,以防止在另一個功能發生問題時測試失敗(例如,在測試刻度時停用標題和圖例)。

您可以依照下列步驟建立新的圖像式測試

  • 建立定義圖表設定和產生選項的 JS 檔案 (範例 (在新視窗開啟)) 或 JSON 檔案 (範例 (在新視窗開啟))。
  • 將此檔案新增至 test/fixtures/{spec.name}/{feature-name}.json
  • 如果 test/specs/{spec.name}.tests.js 的開頭還沒有,請新增描述行 (在新視窗開啟)
  • 執行 pnpm run dev
  • 按一下「偵錯」按鈕(頂端/右側):測試應該會失敗,並顯示相關聯的畫布。
  • 在圖表上按一下滑鼠右鍵,然後按一下「另存影像為...」test/fixtures/{spec.name}/{feature-name}.png,請確保不要啟動工具提示或任何滑鼠懸停功能
  • 重新整理瀏覽器頁面 (CTRL+R):測試現在應該會通過
  • 透過在 JSON 檔案中稍微變更功能值,來驗證測試的相關性。

測試應該在兩個瀏覽器中都通過。一般而言,我們已隱藏影像測試中的所有文字,因為很難讓它們在不同的瀏覽器之間通過。因此,建議隱藏圖像式測試中的所有刻度。也建議停用動畫。如果測試仍然沒有通過,請在 JSON 檔案開頭調整 tolerance 和/或 threshold (在新視窗開啟),並將它們保持在盡可能低的值

當測試失敗時,會顯示預期的影像和實際影像。如果您想在測試通過時也看到影像,請在 JSON 檔案中設定 "debug": true

# 錯誤和問題

請在 GitHub 頁面上回報這些問題 - 網址為 github.com/chartjs/Chart.js。請勿將問題用於支援要求。如需 Chart.js 的使用協助,請查看 Stack Overflow 上 chart.js (在新視窗開啟)標籤。

結構良好且詳細的錯誤回報對專案極具價值。

回報錯誤的準則

請提供與此錯誤相關的任何其他詳細資訊,例如是否為瀏覽器或螢幕密度特定問題,或是只在特定配置或資料下才會發生。

最後更新時間: 2024/5/17 下午 12:33:38