您已付出艰辛努力来提高速度,现在请务必通过 Lighthouse Bot 自动执行性能测试,确保速度保持在较高水平。
Lighthouse 会从 5 个类别对应用进行评分,其中一个类别是性能。虽然您可以尝试记住每次编辑代码时都使用 DevTools 或 Lighthouse CLI 监控性能变化,但您不必这样做。工具可以为您处理繁琐的任务。Travis CI 是一项出色的服务,每次您推送新代码时,它都会自动在云端运行应用的测试。
Lighthouse Bot 与 Travis CI 集成,其性能预算功能可确保您不会在不知不觉中意外降低性能。您可以配置代码库,使其在 Lighthouse 分数低于您设置的阈值(例如 < 96/100)时不允许合并拉取请求。
虽然您可以在 localhost 上测试性能,但您的网站在实际服务器上的性能通常会有所不同。为了获得更真实的了解,最好将网站部署到临时服务器。您可以使用任何托管服务;本指南将以 Firebase 托管为例。
1. 设置
这款简单的应用可帮助您对三个数字进行排序。
从 GitHub 克隆示例,并确保将其添加为 GitHub 账号中的代码库。
2. 部署到 Firebase
首先,您需要拥有一个 Firebase 账号。完成上述操作后,点击“添加项目”,在 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 上注册账号,然后在个人资料的“设置”部分下激活 GitHub 应用集成。

拥有账号后
前往个人资料下的“设置”,点击“同步账号”按钮,并确保您的项目代码库已列在 Travis 上。

若要开始持续集成,您需要做好以下两项准备:
- 在根目录中包含
.travis.yml文件 - 通过执行常规的旧版 git push 来触发 build
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 中“设置”下的代码库,查看项目的 Travis 信息中心。如果一切顺利,您会在几分钟内看到 build 从黄色变为绿色。🎉
4. 使用 Travis 自动执行 Firebase 部署
在第 2 步中,您登录了 Firebase 账号,并使用 firebase deploy 从命令行部署了应用。为了让 Travis 将您的应用部署到 Firebase,您必须对其进行授权。如何做到这一点?使用 Firebase 令牌。
🗝️🔥
授权 Firebase
如需生成令牌,请运行以下命令:
firebase login:ci
系统会在浏览器窗口中打开一个新标签页,以便 Firebase 验证您的身份。 之后,返回控制台,您会看到新生成的令牌。 复制该令牌,然后返回到 Travis。
在项目的 Travis 界面中,依次前往更多选项 > 设置 > 环境变量。

将令牌粘贴到值字段中,将变量命名为 FIREBASE_TOKEN,然后添加该变量。
将部署添加到 Travis 设置中
您需要添加以下代码行,以便在每次成功构建后告知 Travis 部署应用。
将它们添加到 .travis.yml 文件的末尾。🔚
after_success:
- firebase deploy --token $FIREBASE_TOKEN --non-interactive
将此更改推送到 GitHub,然后等待首次自动部署。 如果您查看 Travis 日志,应该很快就会看到“✔️ Deploy complete!”(部署完成!)消息。
现在,无论您何时对应用进行更改,这些更改都会自动部署到 Firebase。
5. 设置 Lighthouse Bot
友好的 Lighthouse 机器人会向您提供应用的 Lighthouse 分数更新。 只需获得您代码库的邀请即可。
在 GitHub 上,前往项目的设置,然后添加“lighthousebot”作为协作者(“设置”>“协作者”):

批准这些请求是一个手动流程,因此并不总是立即完成。在开始测试之前,请确保 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 测试,请执行以下操作:
- 检出新分支
- 将其推送到 GitHub
- 创建拉取请求
请在相应 pull 请求页面上耐心等待 Lighthouse Bot 唱歌!🎤


效果得分很高,应用未超出预算,并且检查已通过!
更多 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 将失败。
您还可以选择不接收 Lighthouse Bot 的评论,只需使用 --no-comment 选项即可。