Hello 大家好,我是你们的效率喵!🐱✨
作为一个重度「自动化强迫症」患者,任何需要手动点三次以上的操作,我都会想方设法把它写进脚本里。
日常做前端性能优化,大家肯定都用过 Chrome DevTools 里的 Lighthouse。但每次提 PR 都要手动跑一遍、截图、发群里对齐?这也太不 Geek 了!而且本地环境网络、机器性能波动极大,今天跑 95 分,明天跑 80 分,根本没法做标准化监控。
今天喵就来安利一个提升前端工程幸福感的大杀器 —— Lighthouse CI (LHCI),手把手带大家搭建一套嵌在 GitHub Actions 里的前端性能自动化体检流水线!
一、 传统手动测试 vs Lighthouse CI
先来一张效率喵最爱的对比清单:
| 维度 | 手动 DevTools 测速 | Lighthouse CI 自动化 |
|---|---|---|
| 触发时机 | 靠自觉,想起来才测 | 每次 Git Push / PR 自动触发 |
| 测试环境 | 开发者本地机(受后台应用干扰) | 统一容器 / 云端干净环境 |
| 拦截能力 | 无法阻断发布 | 性能评分不达标,直接 Block PR ❌ |
| 历史趋势 | 靠人肉记 Excel | 自动生成可视化趋势大盘 📊 |
一句话总结:把性能卡点前置到 CI 阶段,谁把首屏改慢了,CI 直接标红,别想 Merge 代码!
二、 核心配置:5 分钟搞定 lighthouserc.js
Lighthouse CI 的核心配置文件是根目录下的 lighthouserc.js(或 JSON 格式)。它主要分为三个模块:收集(Collect)、断言(Assert)、上传(Upload)。
在项目根目录下安装依赖:
npm install -D @lhci/cli
新建配置文件 lighthouserc.js:
module.exports = {
ci: {
collect: {
// 本地静态构建产物服务,LHCI 会自动帮你启动一个静态 server
staticDistDir: './dist',
// 测试的页面路由
url: ['http://localhost/index.html', 'http://localhost/about.html'],
// 测 3 次取中位数,消除 CI 机器波动误差(效率秘籍!)
numberOfRuns: 3,
settings: {
// 模拟移动端还是桌面端
preset: 'desktop',
},
},
assert: {
assertions: {
// 核心性能指标断言:低于 0.9 分直接报错打断 CI
'categories:performance': ['error', { minScore: 0.9 }],
'categories:accessibility': ['warn', { minScore: 0.95 }],
'categories:best-practices': ['warn', { minScore: 0.9 }],
'categories:seo': ['warn', { minScore: 0.9 }],
// 单项 Core Web Vitals 阈值控制 (LCP, CLS, FID)
'largest-contentful-paint': ['error', { maxNumericValue: 2500 }], // LCP 必须在 2.5s 内
'cumulative-layout-shift': ['error', { maxNumericValue: 0.1 }], // CLS 必须小于 0.1
},
},
upload: {
// 临时将报告上传到 Google 的临时公开存储(适合开源项目/Demo)
// 企业级推荐部署私有的 lhci server
target: 'temporary-public-storage',
},
},
};
三、 接入 GitHub Actions:真正的自动化魔法 🪄
有了配置文件,接下来就是让 GitHub Actions 帮我们干苦力。
在项目根目录下创建 .github/workflows/lhci.yml:
name: Performance Automated Audit
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
lhci:
name: Lighthouse CI
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 设置 Node.js 环境
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: 安装依赖
run: npm ci
- name: 构建生产产物
run: npm run build
- name: 运行 Lighthouse CI 性能体检
run: |
npm install -g @lhci/cli
lhci autorun
env:
# 如果配置了 Lighthouse CI GitHub App,可以填入 token 实现 PR 自动评论
LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
此时只要有新 PR 提交,GitHub Actions 就会自动跑 Build -> 启动无头 Chrome 测速 -> 比对 assert 规则。
如果某位同学引入了一个 5MB 的未压缩图片导致 LCP 爆表,CI 就会无情亮红灯,并给出具体报告链接,直接省去 Code Review 阶段肉眼查性能的时间!
四、 效率喵的私房进阶技巧 💡
- 设置性能预算(Performance Budget)
除了分数,你还可以针对资源体积做强约束。在
assert中加入:javascript'resource-summary:script:size': ['error', { maxNumericValue: 300000 }], // JS 总包体不超过 300KB - 结合 Vercel / Netlify Preview
如果是 SSR 项目(比如 Next.js),不需要本地启动静态服务器,可以用
collect.url直接挂载 Preview URL,进行真实线上模拟体检。 - 消除 CI 机器性能波动
GitHub 的免费 runner 性能偶尔会有抖动。建议将
numberOfRuns设置为 3 到 5 次,LHCI 会自动使用中位数结果,有效防止误报。
总结
引入 Lighthouse CI 后,性能监控不再是一次性的「攻坚项目」,而是融入日常开发流的「自动化门禁」。用工具替我们兜底,不仅省心,还能倒逼团队在日常编码中保持极致的性能意识。
你平时用什么工具做前端性能监控?欢迎在评论区和效率喵交流你的神仙工作流!🐾
觉得有用的话,别忘了 点赞 + 收藏 + 关注 喵!下期给大家测评几款超硬核的打包体积分析插件~ 🚀
许可协议:CC BY-NC 4.0
更新于 1 小时前
觉得文章有帮助?点个赞吧!
0 条评论


