使用 Lighthouse 機器人設定效能預算

Milica Mihajlija
Milica Mihajlija

您已進行了快速測試,現在請透過 Lighthouse Bot 自動執行效能測試,確保維持快速。

Lighthouse 會根據 5 個類別為應用程式評分,其中之一是效能。雖然您可以嘗試記得每次編輯程式碼時,都使用 DevToolsLighthouse CLI 監控效能變化,但這並非必要。工具可以代勞處理繁瑣的工作。Travis CI 是一項優質服務,可在您每次推送新程式碼時,自動在雲端為應用程式執行測試。

Lighthouse Bot 與 Travis CI 整合,且效能預算功能可確保您不會在未註意到的情況下意外降級效能。您可以設定存放區,讓系統在 Lighthouse 分數低於您設定的門檻 (例如 < 96/100) 時,禁止合併提取要求。

GitHub 上的 Lighthouse Bot 檢查失敗
GitHub 上的 Lighthouse Bot 檢查。

雖然您可以在本機上測試效能,但網站在實際伺服器上的表現通常會有所不同。如要取得更準確的資料,建議您將網站部署至測試伺服器。您可以使用任何代管服務;本指南將介紹 Firebase 代管

1. 設定

這個簡單的應用程式可協助您排序三個數字。

從 GitHub 複製範例,並務必將其新增為 GitHub 帳戶中的存放區。

2. 部署至 Firebase

您需要擁有 Firebase 帳戶才能開始使用。完成後,請按一下「Add project」在 Firebase 控制台中建立新專案

部署至 Firebase

您需要使用 Firebase CLI 部署應用程式。即使您已安裝 CLI,建議您經常使用以下指令將 CLI 更新至最新版本:

npm install -g firebase-tools

如要授權 Firebase CLI,請執行以下指令:

firebase login

接著初始化專案:

firebase init

在設定期間,控制台會詢問一系列問題:

  • 系統提示選取功能時,請選擇「代管」。
  • 針對預設的 Firebase 專案,請選取您在 Firebase 控制台中建立的專案。
  • 輸入「public」做為公開目錄。
  • 輸入「N」(否) 即可設為單頁應用程式。

這個程序會在專案目錄的根目錄中建立 firebase.json 設定檔。

恭喜,您可以部署了!執行作業:

firebase deploy

您很快就能擁有上線應用程式。

3. 設定 Travis

您必須在 Travis 上註冊帳戶,然後在個人資料的「Settings」(設定) 專區下啟用 GitHub Apps 整合功能。

Travis CI 上的 GitHub Apps 整合

建立帳戶後

前往個人資料底下的「設定」,按一下「同步帳戶」按鈕,確認您的專案存放區已列在 Travis 中。

如要啟動持續整合,您必須準備兩個要件:

  1. 如何在根目錄中建立 .travis.yml 檔案
  2. 如要透過執行一般舊版 Git 推送來觸發建構作業

lighthouse-bot-starter 存放區已含有 .travis.yml YAML 檔案:

language: node_js
node_js:
  - "8.1.3"
install:
  - npm install
before_script:
  - npm install -g firebase-tools
script:
  - webpack

YAML 檔案會指示 Travis 安裝所有依附元件並建構應用程式。接下來,您可以將範例應用程式推送至自己的 GitHub 存放區。如果您尚未設定,請執行下列指令:

git push origin main

按一下 Travis 中「Settings」(設定) 下方的存放區,即可查看專案的 Travis 資訊主頁。如果一切正常,您會看到建構作業在幾分鐘內從黃色變成綠色。🎉

4. 使用 Travis 自動化 Firebase 部署作業

在步驟 2 中,您已登入 Firebase 帳戶,並透過 firebase deploy 從命令列部署應用程式。為了讓 Travis 將應用程式部署至 Firebase,您必須授權。你要怎麼做?使用 Firebase 權杖。🗝️🔥

授權 Firebase

如要產生符記,請執行下列指令:

firebase login:ci

系統會在瀏覽器視窗中開啟新分頁,以便 Firebase 驗證您的身分。完成後,請查看控制台,您會看到新鑄造的符記。複製卡片,然後返回 Travis。

在專案的 Travis 資訊主頁中,依序前往「More options」>「Settings」>「Environment variables」

將符記貼到值欄位,並將變數命名為 FIREBASE_TOKEN,然後新增。

在 Travis 設定中新增部署作業

您需要使用下列程式碼行,告訴 Travis 在每次成功建構後部署應用程式。將這些內容加入 .travis.yml 檔案的結尾。🔚

after_success:
  - firebase deploy --token $FIREBASE_TOKEN --non-interactive

將這項變更推送至 GitHub,然後等待第一次自動部署作業。查看 Travis 記錄,應該很快就會看到「Deploy complete!」(部署完成)。

從現在起,您對應用程式所做的變更都會自動部署至 Firebase。

5. 設定 Lighthouse Bot

友善的 Lighthouse Bot 會通知您應用程式的 Lighthouse 分數。只要邀請對方加入您的存放區即可。

前往 GitHub 的專案設定,將「lighthousebot」新增為協作者 ([設定] > [協作者]):

Lighthouse 機器人協作者狀態

核准這些要求是手動程序,因此不一定會立即核准。開始測試前,請確認 Lighthousebot 已核准其協作者狀態。同時,您也需要在 Travis 上將另一個鍵新增至專案的環境變數。請保留這封電子郵件,這樣就能在收件匣中收到 Lighthouse Bot 金鑰。📬

在 Travis 中,將這個金鑰新增為環境變數,並命名為 LIGHTHOUSE_API_KEY

將 Lighthouse Bot 新增至專案

接著,執行下列指令,將 Lighthouse Bot 新增至專案:

npm i --save-dev https://github.com/ebidel/lighthousebot

並將這段程式碼新增至 package.json

"scripts": {
  "lh": "lighthousebot"
}

將 Lighthouse Bot 新增至 Travis 設定

在最後一個訣竅中,請在每次提取要求後測試應用程式的效能!

.travis.yml 中,在 after_success 中新增另一個步驟:

after_success:
  - firebase deploy --token $FIREBASE_TOKEN --non-interactive
  - npm run lh -- https://staging.example.com

系統會針對指定網址執行 Lighthouse 稽核,因此請將 https://staging.example.com 替換為應用程式的網址 (即 your-app-123.firebaseapp.com)。

設定高標準並調整設定,確保不會接受任何會導致應用程式效能分數低於 95 的變更:

- npm run lh -- --perf=95 https://staging.example.com

提出提取要求,在 Travis 上觸發 Lighthouse Bot 測試

Lighthouse Bot 只會測試提取要求,因此如果您現在推送至主分支,Travis 記錄中只會顯示「This script can only be run on Travis PR requests」。

如要觸發 Lighthouse Bot 測試:

  1. 檢查新分支
  2. 將其推送至 GitHub
  3. 提出提取要求

請耐心等候提取要求頁面,並等待 Lighthouse Bot 開始唱!🎤

通過 Lighthouse 分數

通過 GitHub 檢查

成效分數很高、應用程式預算低於上限,且檢查已通過!

更多 Lighthouse 選項

還記得 Lighthouse 如何測試 5 個不同類別嗎?您可以針對使用 Lighthouse Bot 旗標的任何使用者強制執行分數:

--perf  # performance
--pwa   # progressive web app score
--a11y  # accessibility score
--bp    # best practices score
--seo   # SEO score

範例:

npm run lh -- --perf=93 --seo=100 https://staging.example.com

如果效能分數降至低於 93 SEO 分數降至低於 100,PR 就會失敗。

您也可以使用 --no-comment 選項選擇不接收 Lighthouse Bot 的意見。